美文网首页JDK源码阅读
Comparator源码阅读

Comparator源码阅读

作者: 丶time | 来源:发表于2018-04-24 19:24 被阅读0次

    Comparator源码阅读

    源码注释

    一个比较函数,可以传递给排序方法,也可以用于分组,相比于Comparable需要类自身实现比较函数,有需求时,Comparator可以动态的自定义比较策略,可以支持不同的类之间进行比较,较灵活。

    @FunctionalInterface
    public interface Comparator<T> 
    
    

    FunctionalInterface,该注解只能标记在仅有一个抽象方法的接口上,非必须,加上的好处:让编译器检查,增加可读性。

    说明:static,default修饰的方法不算抽象方法,只要没有覆盖Object中的方法也不算抽象方法。


    抽象方法

    compare
    int compare(T o1, T o2);
    
    

    只能返回正数,0和负数,对应o1小于,等于或大于o2


    其他方法

    equals
     boolean equals(Object obj);
    
    

    该方法是Object中的方法, 若比较的实例对象需要比较相等时,则应该在compare中调用equals方法,实例对象的equals重写与否看实例对象的实际情况,最好一致对应,不对应可以不在compare中调用,自己制定


    reversed
        default Comparator<T> reversed() {
            return Collections.reverseOrder(this);
        }
    
    

    返回一个比较规则相反的Comparator


    thenComparing
        default Comparator<T> thenComparing(Comparator<? super T> other) {
            Objects.requireNonNull(other);
            return (Comparator<T> & Serializable) (c1, c2) -> {
                int res = compare(c1, c2);
                return (res != 0) ? res : other.compare(c1, c2);
            };
        }
    
    

    配合java8 lambda表达式使用,暂时放一下//TODO

    相关文章

      网友评论

        本文标题:Comparator源码阅读

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