标签:Comparable Comparator 接口 compareTo o2 o1
相同:都用于对象的大小比较
不同:
1.
Comparable 内部自然排序。(实体类实现) java.lang.Comparable
Comparator 外部定制排序。(无法修改实体类时,直接在调用方创建) java.util.Comparator
2.
(1)Comparable是排序接口,若一个类实现了该接口,那么该类的对象就可以进行比较排序。接口中只有一个方法:compareTo(o)方法
具体的比较规则是按照 compareTo 方法中的规则进行。这种顺序称为 自然顺序。
compareTo 方法的返回值有三种情况:
- o1 > o2 o1.compareTo(o2) > 0
- o1 = o2 o1.compareTo(o2) = 0
- o1 < o2 o1.compareTo(o2) < 0
(2)java中包装类,String类实现了Comparable接口
(3)排序后,默认按照升序排列
3.(1)Comparator是排序接口,可以通过实现Comparator来创建一个比较器,然后通过这个比较器对对象进行排序。该接口中有一个方法:compare(o1, o2)
称为定制排序
compare(o1, o2) 方法的返回值有三种情况:
o1<o2 返回负数
o1==o2 返回0
o1>o2 返回正数
(2)可以将比较器传入:Arrays.sort(),Collections.sort(),TreeSet(),TreeMap()
(3)Comparator接口只有一个方法,所以可以用Lambda表达式
Lambda表达式只能用于函数式接口,也就是只有一个抽象方法的接口
3.
(1)对于一些普通的数据类型(比如 String, Integer, Double…),它们默认实现了Comparable 接口,实现了 compareTo 方法,我们可以直接使用。
(2)而对于一些自定义类,它们可能在不同情况下需要实现不同的比较策略,我们可以新创建 Comparator 接口,然后使用特定的 Comparator 实现进行比较。
这就是 Comparable 和 Comparator 的区别。
标签:Comparable,Comparator,接口,compareTo,o2,o1 来源: https://www.cnblogs.com/midiyu/p/15173362.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。