CompareTo和Comparator区别
Compareable和Comparator都是接口
Compareable位于java.lang, Comparator位于java.util包下。
实现Compareable<>需要实现
@Override
public int compareTo(UseCompareable o) {
return 0;
}
一般情况下,如果equals返回true,则compareTo也应该返回0。需要考虑是否进行重写。
实现comparator<>
@Override
public int compare(UseCompareable o1, UseCompareable o2) {
return 0;
}
- Comparable是排序接口;若一个类实现了Compareable接口,就意味着“该类”支持排序;而Comparator是比较器;我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序。
- Comparable相当于“内部比较器”,而Comparator相当于“外部比较器.
- Comparable是通用的接口,用户可以实现它来完成自己特定的比较,而Comparator可以看成是一种算法的实现,在需要容器集合实现比较功能的时候,来指定这个比较器,这可以看成是一种设计模式,将算法和数据分离。
- 前者比较固定,和一个具体类进行绑定,而后者比较灵活,它可以被用于各个需要比较功能的类使用