今天看了劍指的45題,其實(shí)也不難想,看了個(gè)很好的Java實(shí)現(xiàn)的代碼:
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();
}
}
其實(shí)最主要的就是重寫(xiě)的這個(gè)compare函數(shù),之前看核心卷,認(rèn)真讀了一下comparable接口,但是都忘了。
@Override
public int compare(String s1,String s2){
String a=s1+s2;
String b=s2+s1;
return a.compareTo(b);
}
看了一下jdk8的手冊(cè)才明白,

image.png
其實(shí)這個(gè)問(wèn)題是把接口作為參數(shù)傳入到這個(gè)sort函數(shù)中了,然后在里面進(jìn)行了覆寫(xiě)。