今天看了剑指的45题,其实也不难想,看了个很好的Java实现的代码:
public class SortArrayForMinNumber {
public String PrintMinNumber(int [] numbers) {
if(numbers==null || numbers.length<=0)
return "";
ArrayList<String> list = new ArrayList<String>();
for(int number:numbers)
list.add(String.valueOf(number));
Collections.sort(list,new Comparator<String>(){
@Override
public int compare(String s1,String s2){
String a=s1+s2;
String b=s2+s1;
return a.compareTo(b);
}
});
StringBuilder sb= new StringBuilder();
for(String str:list)
sb.append(str);
return sb.toString();
}
}
其实最主要的就是重写的这个compare函数,之前看核心卷,认真读了一下comparable接口,但是都忘了。
@Override
public int compare(String s1,String s2){
String a=s1+s2;
String b=s2+s1;
return a.compareTo(b);
}
看了一下jdk8的手册才明白,
其实这个问题是把接口作为参数传入到这个sort函数中了,然后在里面进行了覆写。