Java - compare(Integer o1, Integer o2)方法的使用
class Test {
public static void main(String[] args) {
Integer[] nums = new Integer[]{6, 8, 3, 0, 2};
// 0 2 3 6 8
asc(nums);
// 8 6 3 2 0
dsc(nums);
}
private static void asc(Integer[] nums) {
Arrays.sort(nums, new Comparator<Integer>() {
// 6, 8, 3, 0, 2
// 如果返回-1,不交换顺序,
// 如果返回1和0,交换顺序
// o1 和 o2 比较,如果o1-o2<0,说明前面的数比后面的数小,返回-1,不交换顺序
// 6和8比较,6-8<0,不交换顺序(o1-o2)
// 8和3比较,8-3>0,交换顺序 3 8
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
for (Integer i : nums) {
System.out.print(i + " ");
}
}
private static void dsc(Integer[] nums) {
Arrays.sort(nums, new Comparator<Integer>() {
// 6, 8, 3, 0, 2
// 如果返回-1,不交换顺序
// 如果返回0和1,交换顺序
// 6和8比较,8-6>0,交换顺序为 8 6 (o2-o1)
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
for (Integer i : nums) {
System.out.print(i + " ");
}
}
}