Comparable和Comparator的区别和联系
来源:互联网 发布:群p是种什么体验知乎 编辑:程序博客网 时间:2024/06/05 13:07
1 两个接口的定义
public interface Comparator<T> { int compare(T o1, T o2); boolean equals(Object obj);//object的}public interface Comparable<T> { public int compareTo(T o);}
2 区别
<T extends Comparable<? super T>> void java.util.Collections.sort(List<T> list) <T> void java.util.Collections.sort(List<T> list, Comparator<? super T> c)
Comparator是比较器,是策略模式,不改变对象自身,而用一个策略对象来改变它的行为。
Comparable规定了一个类的“自然顺序”(nature order)。继承它的类需要实现compareTo 接口。
Collections.sort(list,comparator), Arrays.sort(list, comparator);以及有序的Set(TreeSet)和Map(TreeMap)可以用到Comparator来指定比较器。
如果集合元素实现了Comparable接口,则Collections.sort,Arrays.sort有序的set和map就可以不指定比较器而自动排序。
3 联系
List<Boolean> ll = Arrays.asList(true,false,true,false);ll.sort((x, y)->Boolean.compare(x, y));ll.sort(Boolean::compare);即Comparator<Boolean> c = Boolean::compare;等价于Comparator<Boolean> c = new Comparator<Boolean>() { @Override public int compare(Boolean x, Boolean y) { return Boolean.compare(x, y); }};
4 其他
Comparable是java.lang下
Comparator是java.util下。
这个跟java.util.Iterator和java.lang.Iteratable是一样的。
阅读全文
0 0
- Comparable和Comparator的联系和区别
- Comparable和Comparator的区别和联系
- Comparable和Comparator接口的联系与区别
- Comparator和Comparable的区别
- Comparable和 Comparator的区别
- Comparator和Comparable的区别
- comparable和comparator的区别
- Comparable和Comparator的区别
- Comparator 和 Comparable 的区别
- comparable和comparator的区别
- Comparable和Comparator的区别
- Comparable和Comparator的区别
- Comparable和Comparator的区别
- Comparable和Comparator的区别
- Comparable 和 Comparator的区别
- Comparable和Comparator的区别
- Comparable和Comparator的区别
- Comparable和Comparator的区别
- 线程池
- FFmpeg编码详细流程
- BZOJ 2836: 魔法树 树链剖分+DFS序
- 边框距离上下都是有距离的
- 硬盘的读写原理
- Comparable和Comparator的区别和联系
- Android:实现装备购买
- C++作业6
- How do I clone a github project to run locally?
- 闪电狗 发送邮件 配置
- 使用HttpClient实现文件的上传下载
- java创建线程的两种方法
- leetcode 36. Valid Sudoku 数独有效
- Ajax比较