1

如果 Java TreeSet 设置了一个比较器来处理对象排序逻辑但是对象(类)也实现了可比较并且在其上实现了有效的 compareTo 方法。

哪个优先?比较器中的逻辑还是 compareTo 方法中的逻辑?

非常感谢。

4

2 回答 2

5

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.

于 2011-10-18T20:11:15.040 回答
4

这在 Javadocs 中有很清楚的说明(强调):

public TreeSet(Comparator<? super E> comparator)
构造一个新的空树集,根据指定的比较器排序。...

参数:
comparator- 将用于订购此集合的比较器。

于 2011-10-18T20:19:31.177 回答