自然排序和树集(比较器<?超级E> comp)构造函数解释



我只是想有人向我解释一件事。根据Java文档:可比较接口对实现它的每个类的对象施加总排序。这种排序称为类的自然排序,类的 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 时,会发生什么。如果您按顺序告诉我这里发生的流程流,我将有很大帮助。提前谢谢你。

这是

TreeMap源(JDK 1.6.0-30)截取的(TreeSetTreeMap支持,除非明确选择了另一个集合)

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;
    }

如您所见,如果映射为空(根为空),则只需添加该值。不做任何比较。

至于添加AB,我就把它留给你一个练习,实际上有一些很好的学习!

干杯

请查看此课程的详细信息

最新更新