public interface Comparator
接口里面的方法
intcompare(T o1, T o2)
o1> o2 返回 1o1= o2 返回 0o1< o2 返回 -1
booleanequals(Object obj)
判断是否相等
其他方法:https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html
强行对某个对象 collection 进行整体排序 的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。
将数组中偶数排的后面
实现Comparator接口
class myComparator implements Comparator{public intcompare(Integer a,Integer b){return a%2==0?1:-1;
}
}
Comparator 传递给 sort 方法
packagearrays1;importjava.util.Arrays;importjava.util.Comparator;class myComparator implements Comparator{public intcompare(Integer a,Integer b){return a%2==0?1:-1;
}
}public classmyArray {public voidmySort(){
Integer[] A= new Integer[]{2,0,345,234,12,34,23};
System.out.println(Arrays.toString(A));
Arrays.sort(A,newmyComparator());
System.out.println(Arrays.toString(A));
}public static voidmain(String[] args){newmyArray().mySort();
}
}
输出结果:
[2, 0, 345, 234, 12, 34, 23]
[23, 345, 2, 0, 234, 12, 34]
上面传递的是一个实例类对象
我们可以根据上节讲的内部类实现
packagearrays1;importjava.util.Arrays;importjava.util.Comparator;public classmyArray {class innerComparator implements Comparator{public intcompare(Integer a,Integer b){return a%2==0?1:-1;}
}public voidmySort(){
Integer[] A= new Integer[]{2,0,3