Comparator可能会遇到的坑

Comparator是一个用来比较的接口。我们可以自定义一个比较类实现Comparator来实现自定义排序。只需要实现其中的compare方法就可以了。

public interface Comparator {
int compare(T o1, T o2);
............
}

今天我在刷力扣时,我想对一个二维数组进行自定义的排序。运用了匿名内部类来实现Comparator,但是在compile的时候却报错了。让我百思不得其解,为什么这样会错呢。后来又看了看源码。Comparator, 有一个泛型,compare()方法中的参数类型也是T,所以使用必须要声明类型。我的错误原因就是Comparator()没有声明泛型。

 int[][] tt=new int[2][3];
        Arrays.sort(tt,new Comparator(){
            @Override
            public int compare(int[] a,int[] b){
                if(a[0]!=b[0])
                    return a[0]-b[0];
                else
                    return a[1]-b[1];
            }
        });

应该改为以下代码就可以了。

 Arrays.sort(tt, new Comparator() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return 0;
            }
        });

你可能感兴趣的:(bug,源码,刷题,java)