super K> cpr = comparator ; // 如果比较器不为空,就是用指定的比较器来维护TreeMap的元素顺序 if (cpr != null) { // do while循环,查找key要插入的位置(也就是新节点的父节点是谁) do { // 记录上次循环的节点t parent = t; // 比较当前节点的key和新插入的key的大小 cmp = cpr.compare(key...
public V put(K key, V value) { //我挑出一段该方法的重点来解释 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...
Comparable可以认为是一个内比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较,则依赖compareTo方法的实现,compareTo方法也被称为自然比较方法。如果开发者add进入一个Collection的对象想要Collections的sort方法帮你自动进行排序的话,那么这个对象...
}return0; }publicPerson(intage, String name) {super();this.age =age;this.name =name; } @OverridepublicString toString() {return"Person [age=" + age + ", name=" + name + "]"; } } 测试代码: packagecn.qlq.test;importjava.util.Map;importjava.util.Set;importjava.util.TreeMap;impor...
Entry<K,V> parent; Comparator<?superK> cpr = comparator;if(cpr !=null) {do{ parent = t; cmp = cpr.compare(key, t.key);if(cmp <0) t = t.left;elseif(cmp >0) t = t.right;elsereturnt.setValue(value); }while(t !=null); ...
superK>cpr=comparator;if(cpr!=null){do{parent=t;cmp=cpr.compare(key,t.key);if(cmp<0)t=t.left;elseif(cmp>0)t=t.right;elsereturnt.setValue(value);}while(t!=null);}else{if(key==null)thrownewNullPointerException();@SuppressWarnings("unchecked")Comparable<?superK>k=(Comparable<?super...
Entry<K,V>parent;// split comparator and comparable pathsComparator<?super K> cpr = comparator;if(cpr !=null) {do{parent= t; cmp = cpr.compare(key, t.key);if(cmp <0) t = t.left;elseif(cmp >0) t = t.right;elsereturnt.setValue(value); ...
1.2.2 comparator 1.3 Strategy设计模式 1.4 回忆TreeMap的比较大小 1 集合容器中Strategy设计模式 前面我们说TreeMap和TreeSet都是有顺序的集合,而顺序的维持是要靠一个比较器Comparator或者map的key实现Comparable接口 既然说到排序,首先我们不用去关心什么是Strategy设计模式,也不用关心它为了解决什么问题而存在,我们直...
前面我们说TreeMap和TreeSet都是有顺序的集合,而顺序的维持是要靠一个比较器Comparator或者map的key实现Comparable接口。 既然说到排序,首先我们不用去关心什么是Strategy设计模式,也不用关心它为了解决什么问题而存在,我们直接从排序开始看。1.排序 假设...