起因
我在leetcode上做题时遇到要使用Java语言进行类似C++结构体排序。在之前我是不了解如何实现的,所以在看了题解后发现要重写sort
比较器,需要使用到Comparator
接口中的compare
方法。于是我就学习了该接口,并且写下一些总结。
Comparator接口
Comparator
是一个接口,有一个泛型参数:
interface Comparator<T>
它属于java.util
包,有两个比较重要的方法:
int compare(T o1, T o2)
boolean equals(Object obj)
compare
方法返回值是int
,第一个参数小于第二个参数是返回值为负数,相等返回值为0,大于返回值为正数。
equals
方法重写了Object.equals(Object)
方法,返回值是boolean
,如果是同一个对象就返回值为true
,如果不是,就返回false
。
Arrays.sort方法
public static <T> void sort(T[] a, Comparator<? super T> c)
该方法是一个静态方法,直接通过类名访问。
该方法的第二个参数决定了数组的排序顺序。
重写sort方法
代码:
Arrays.sort(A, new Comparator<int[]>() {
public int compare(int[] a, int[] b) {
return a[1] - b[1];
}
})
该代码是以两个数组的第二个值为参数比较的。