如果 Java TreeSet 设置了一个比较器来处理对象排序逻辑但是对象(类)也实现了可比较并且在其上实现了有效的 compareTo 方法。
哪个优先?比较器中的逻辑还是 compareTo 方法中的逻辑?
非常感谢。
The Comparator passed-in to TreeSet's constructor takes priority. This allows for using a different comparison algorithm than is implemented by the object's compareTo
. If it weren't for this, you'd never be able to use a different comparison algorithm with TreeSet.
这在 Javadocs 中有很清楚的说明(强调):
public TreeSet(Comparator<? super E> comparator)
构造一个新的空树集,根据指定的比较器排序。...参数:
comparator
- 将用于订购此集合的比较器。