黑马程序员技术交流社区
标题:
TreeSet类add( )方法源码解析?
[打印本页]
作者:
lijiy09
时间:
2016-3-20 22:21
标题:
TreeSet类add( )方法源码解析?
public V put(K key, V value) {
Entry<K,V> t = root;
if (t == null) {
compare(key, key); // type (and possibly null) check
root = new Entry<>(key, value, null);
size = 1;
modCount++;
return null;
}
int cmp;
Entry<K,V> parent;
// split comparator and comparable paths
Comparator<? super K> 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<? super K> k = (Comparable<? super K>) 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<K,V> e = new Entry<>(key, value, parent);
if (cmp < 0)
parent.left = e;
else
parent.right = e;
fixAfterInsertion(e);
size++;
modCount++;
return null;
}
这里Comparable和Comparator接口,已经被搞晕了,求大神详解该类方法?
作者:
李永昌
时间:
2016-3-24 23:06
要么让子类去实现Comparable接口去比较,,要么用匿名内部类重写Comparator中 conpare方法去比较
作者:
yijincheng
时间:
2016-3-24 23:26
这哪是Set啊,明明是Map的源码嘛
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2