0

我只想有人向我解释一件事。根据 Java 文档:Comparable 接口对实现它的每个类的对象施加了总排序。这种排序称为类的自然排序,类的 compareTo() 方法称为其自然比较方法。现在我们知道 String 类实现了 Comparable ,那么当我们创建一个 String 对象时会发生什么?这里的自然顺序是什么?

class Com implements Comparator<String>{
public int compare<String>(String a,String b){
String s1=a; String s2=b;
return s2.compareTo(s1);
}
}

现在假设 Main() 方法中有这个片段:

TreeSet<String> ts=new TreeSet<String>(new Com());
ts.add("C");
ts.add("A");
ts.add("B");

现在,当第一个 C 被添加时,TreeSet 中没有现有元素,那么会发生什么?那么比较是如何进行的呢?

当 B 被添加时,会发生什么。如果你告诉我这里发生的顺序流程,我会很有帮助。先感谢您。

4

2 回答 2

1

这是从TreeMap源代码(JDK 1.6.0-30)截取的(TreeSet由 a 支持,TreeMap除非明确选择另一个集合)

public V put(K key, V value) {
    Entry<K,V> t = root;
    if (t == null) {
        root = new Entry<K,V>(key, value, null);
        ...
        return null;
    }

如您所见,如果地图为空(根为空),则只需添加值。没有进行比较。

至于添加Aand B,我将把它作为练习留给你,其中实际上有一些很好的学习!

干杯,

于 2012-12-13T11:17:44.067 回答
0

请查看此课程的详细信息

于 2012-12-13T11:16:29.943 回答