我只是希望有人向我解释一件事。根据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被添加时,发生了什么。如果你告诉我在这里顺序发生的流程,我会很有帮助。提前谢谢。
答案 0 :(得分:1)
这是从TreeMap
源(JDK 1.6.0-30)中剪切的(TreeSet
由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;
}
如您所见,如果地图为空(根为空),则只需添加值。没有比较。
至于添加A
和B
,我会把它作为练习留给你,实际上有一些很好的学习!
干杯,
答案 1 :(得分:0)