集合框架_TreeSet保证元素排序的源码解析

网友投稿 550 2022-10-14

集合框架_TreeSet保证元素排序的源码解析

集合框架_TreeSet保证元素排序的源码解析

interface Collection{...}interface Set extends Collection{...}interface NavigableMap{}class TreeMap implements NavigableMap{ public V put(K key, V value) { Entry t = root; if (t == null) { // TBD: // 5045147: (coll) Adding null to an empty TreeSet should // throw NullPointerException // // compare(key, key); // type check root = new Entry(key, value, null); size = 1; modCount++; return null; } int cmp; Entry parent; // split comparator and comparable paths Comparator cpr = comparator; if (cpr != null) { do { parent = t; cmp = cpr.compare(key, t.key); if (cmp < 0) t = t.left; else if (cmp > 0) t = t.right; else return t.setValue(value); } while (t != null); } else { if (key == null) throw new NullPointerException(); Comparable k = (Comparable) key; do { parent = t; cmp = k.compareTo(t.key); if (cmp < 0) t = t.left; else if (cmp > 0) t = t.right; else return t.setValue(value); } while (t != null); } Entry e = new Entry(key, value, parent); if (cmp < 0) parent.left = e; else parent.right = e; fixAfterInsertion(e); size++; modCount++; return null; }}class TreeSet implements Set{ private transient NavigableMap m; public TreeSet(){ this(new TreeMap()); } public boolean add(E e) { return m.put(e, PRESENT)==null; }}真正比较的是依赖于元素的compareTo()方法,而这个方法是定义在Comparable里面的所以,你想要重写该方法,就必须是先Comparable接口。这个接口表示的就是自然排序。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:深入浅出讲解Spring框架中依赖注入与控制反转及应用
下一篇:uLisp- Lisp中的ARM汇编程序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~