Oracle文档中有一句话:
元素按照它们的自然顺序排序,或者用 比较器在创建时设置,具体取决于哪个 使用构造函数
我想知道Comparable可能用于决定TreeSet的顺序,但我不知道如何证明我的想法,所以我不知道它是对的。任何人都可以给我证明它是否正确的方法吗?任何代码或想法都表示赞赏。
代码是为了更好地解释我的问题。
final class Point implements Comparable<Point>{
/***************** override compareTo*****************/
public int compareTo(Point p){}
}
我想使用TreeSet来包含这种对象。为了保持树的顺序(因为TreeSet使用红黑树作为其结构),我应该覆盖一些方法。该文件说我应该使用Comparator
作为其基本订单。但我认为&#39;可比较&#39;也适用于在TreeSet
答案 0 :(得分:2)
正如其他人所说,TreeSet
的正常行为是按自然顺序排序,所以如果你实现Comparable
则是,默认行为就足够了。
// Sorted by "natural" ordering by default
Set<Integer> naturalSet = new TreeSet<Integer>();
// Different constructor that overrides this default behavior
// with an alternate Comparator
Set<Integer> nonNaturalSet = new TreeSet<Integer>(new NonNaturalComparator());