如果使用比较器设置Java TreeSet来处理对象排序逻辑但是对象(类)也实现了可比较的并且在其上实现了有效的compareTo方法。
哪一个优先?比较器内的逻辑或compareTo方法中的逻辑?
非常感谢。
答案 0 :(得分:5)
传递给TreeSet构造函数的Comparator优先。这允许使用与对象compareTo
实现的不同的比较算法。如果不是这样,你就永远无法使用与TreeSet不同的比较算法。
答案 1 :(得分:4)
这清楚地说明in the Javadocs(强调补充):
public TreeSet(Comparator<? super E> comparator)
构造一个新的空树集,根据指定的比较器排序。 ...参数:
comparator
- 将用于订购此集合的比较器。