美文网首页
Effective Java - Comparable

Effective Java - Comparable

作者: DZQANN | 来源:发表于2022-05-17 22:49 被阅读0次

    第14条 考虑实现Comparable接口

    1. compareTo方法是Comparable接口中唯一的方法,允许进行等同性和顺序比较:
      将对象与指定的对象进行比较,当该对象小于,等于或大于指定对象的时候,分别返回一个负整数,零或正整数。

    2. 强烈建议(x.compareTo(y) == 0) == (x.equals(y)),但这并不是必要的。如果没有保证这一点,对于有序集合会有问题。比如BigDecimalcompareToequals方法就不一致,两个对象new BigDecimal("1.0")new BigDecimal("1.000")HashSet(equals)中是不等的,在TreeSet(compareTo)中又是相等的

    3. 从Java 7开始,所有的基本类型的装箱类型都提供了静态的compare方法,所以不再建议使用<>

    4. Java8中引入了FunctionalInterfaceComparator来配置简单的比较器:

      其中比较常用的thenComparingInt,Double,Long。此外comparing还有3个方法重载。里面的方法非常的丰富,是未来实现Comparable比较合适的方法

    [图片上传失败...(image-a73395-1652885362899)]

    private static final Comparator<PhoneNumber> COMPARATOR =
      comparingInt((PhoneNumber pn) -> pn.areaCode)
      .thenComparingInt(pn -> pn.prefix)
      .thenComparingInt(pn -> pn.lineNum);
    

    在TMS中很少见到使用Compareable的方法,大部分的情况都是group, copy,使用equals和clone。

    相关文章

      网友评论

          本文标题:Effective Java - Comparable

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