今天项目里遇到一个需要排序的功能【按下面数组里 - 前要的数字排序】,本来想写几个循环,后来想想又不好看,就查了查API看到Comparator这东西,里面有一个compare方法,就试着自字义一个排序方法。记录一下。
public class StringSortTest {
public static void main(String[] args) {
String[] strArr = {
"11-2",
"4-3",
"12-32",
"21-31",
"10-1",
"2-100",
"22-0",
"5-100",
"500-100",
"125-100",
"235-100",
"75-100",
"1-1",
"1-30",
"1-102"
};
System.out.println("排序前===========================");
System.out.println(Arrays.toString(strArr));
System.out.println("排序后===========================");
Arrays.sort(strArr,new sortList());
System.out.println(Arrays.toString(strArr));
}
}
class sortList implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
if (o1 != null && o1 != null) {
int prefixS1 =Integer.valueOf(o1.substring(0,o1.indexOf("-"))) ;
int prefixS2 = Integer.valueOf(o2.substring(0,o2.indexOf("-")));
return Integer.compare(prefixS1,prefixS2);
}
return 0;
}
}
或者如下写法
Arrays.sort(count_valuesArray, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1 != null && o1 != null) {
int prefixS1 = Integer.valueOf(o1.substring(0, o1.indexOf(separator2)));
int prefixS2 = Integer.valueOf(o2.substring(0, o2.indexOf(separator2)));
return Integer.compare(prefixS1, prefixS2);
}
return 0;
}
});