Comparable和Comparator的区别和联系
2017-05-17 18:36
423 查看
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是一样的。
相关文章推荐
- Comparable与Comparator区别联系
- Comparator and Comparable 及Collections and Collection 的区别及联系?
- Comparable和Comparator的联系和区别
- Comparator and Comparable 及Collections and Collection 的区别及联系?
- Comparable和Comparator接口的联系与区别
- 【原】Comparator和Comparable的联系与区别
- Comparable接口与comparator接口的区别与联系
- Comparator and Comparable 及Collections and Collection 的区别及联系
- 实现comparable与comparator区别
- Comparable与Comparator的区别
- java中comparable和 comparator的区别
- comparable 与comparator的区别?
- 黑马程序员_java--comparable和Comparator 的区别
- Comparable与Comparator的区别
- 对象排序之Comparator,Comparable接口区别及应用
- Java语言中comparable与comparator接口的区别
- Comparable与Comparator的区别
- java comparable和Comparator 区别
- Comparable与Comparator接口的区别
- Comparable与Comparator的区别