java排序隔很久不用就忘记了,索性写个笔记
- 一维数组排序:
//========升序========
//常规
Integer[] nums = new Integer[5];
Arrays.sort(nums, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
//lamda
Integer[] nums = new Integer[5];
Arrays.sort(nums, (o1, o2) -> o1 - o2);
//========降序========
//常规
Integer[] nums = new Integer[5];
Arrays.sort(nums, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
//lamda
Integer[] nums = new Integer[5];
Arrays.sort(nums, (o1, o2) -> o2 - o1);
(由于Comparator<? super T> c 必须要包装类,所以一维数组要使用上述方法必须要用Integer[] 而不能用int[], 二维数组以上不用担心此问题)
- 二维数组排序Comparator
//========按梯度升序========
//常规
Integer[][] nums = new Integer[5][2];
Arrays.sort(nums, new Comparator<Integer[]>() {
@Override
public int compare(Integer[] o1, Integer[] o2) {
if(o1[0].equals(o2[0])){
return o1[1] - o2[1];
}
return o1[0] - o2[0];
}
});
//lamda
Integer[][] nums = new Integer[5][2];
Arrays.sort(nums, (o1, o2) -> {
if(o1[0].equals(o2[0])){
return o1[1] - o2[1];
}
return o1[0] - o2[0];
});
//========按梯度降序========
//常规
Integer[][] nums = new Integer[5][2];
Arrays.sort(nums, new Comparator<Integer[]>() {
@Override
public int compare(Integer[] o1, Integer[] o2) {
if(o1[0].equals(o2[0])){
return o2[1] - o1[1];
}
return o2[0] - o1[0];
}
});
//lamda
Integer[][] nums = new Integer[5][2];
Arrays.sort(nums, (o1, o2) -> {
if(o1[0].equals(o2[0])){
return o2[1] - o1[1];
}
return o2[0] - o1[0];
});
- 三维等类推