“3-1”、“1-1-1”、“3-1-1”、“1-2-1-1”.
請編寫一段代碼:
1) 實現數組 strsort[10]按如下所示排序:
1、1-1、1-1-1、1-2、1-2-1-1、2、3、3-1、3-1-1、4
2)實現數組按如下所示排序
1、2、3、4、1-1、1-2、3-1、1-1-1、3-1-1、1-2-1-1
--1:直接使用Arrays.sort()排序,按字典排序
String[] s = new String[]{"1","3","2","1-1","1-2","4","3-1","1-1-1","3-1-1","1-2-1-1"};
Arrays.sort(s);
for(int i = 0; i < s.length; i++){
System.out.print(s[i] + " ");
}
打印結果爲:
--2:使用java比較器Comparetor(外部比較器)
先比較長度,再比較大小
public class SortString implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
//兩個String 每個String表示數組中的元素
// 1: 由低到高 -1:由高到低
String[] s1 = o1.split("-");
String[] s2 = o2.split("-");
if(s1.length == 1 && s2.length ==1){
if(s1[0].compareTo(s2[0]) > 0){ // s1[0]>s2[0]
return 1;
}else if(s1[0].compareTo(s2[0]) < 0){// s1[0]<s2[0]
return -1;
}
}else if(s1.length < s2.length){
return -1;
}else if(s1.length > s2.length){
return 1;
}
return 0;
}
}
然後調用:Arrays.sort(str,new SortString());// str爲原數組
System.out.println(Arrays.toString(s));
打印結果: