美文网首页
Comparator

Comparator

作者: Talk1sCheap | 来源:发表于2021-02-21 00:02 被阅读0次

这是一个外部比较器,对应的是Comparable。B是使类自带排序功能(方法重写中往往是this和参数的比较),而T往往附加使用。
B对应compare方法,T对应compareTo方法

为什么return a-b就完了?

因为返回值为int,使用 正/负/0 来代表 大了/小了/相等

演变

  1. 老实实现接口
MyComparator myComparator = new MyComparator();
class MyComparator implements Comparator {
        @Override
        public int compare(Object o1, Object o2) {
            return 0;
        }
    }
  1. 匿名内部类(语法糖)
Comparator<Object> comparator = new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return 0;
            }
        };
  1. lamda
    由于本质是函数式接口,所以连匿名类都不需要
Integer [] array=new Integer[4];
        Arrays.sort(array,(a,b)->{
            return a-b;
        });
//注意不能是int 因为要使用到泛型

注意的两个点

  1. 接口不能new,这里纯粹是语法糖
  2. 虽然Comparator中很多方法,但那些都是新特性,本质还是只有一个方法

相关文章

网友评论

      本文标题:Comparator

      本文链接:https://www.haomeiwen.com/subject/emjffltx.html