1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
public V put(K key, V value) {
528 Entry<K,V> t = root;
529 if (t == null) {
530 // TBD:
531 // 5045147: (coll) Adding null to an empty TreeSet should
532 // throw NullPointerException
533 //
534 // compare(key, key); // type check
535 root = new Entry<K,V>(key, value, null);
536 size = 1;
537 modCount++;
538 return null;
539 }
540 int cmp;
541 Entry<K,V> parent;
542 // split comparator and comparable paths
543 Comparator<? super K> cpr = comparator;
544 if (cpr != null) {
545 do {
546 parent = t;
547 cmp = cpr.compare(key, t.key);
548 if (cmp < 0)
549 t = t.left;
550 else if (cmp > 0)
551 t = t.right;
552 else
553 return t.setValue(value);
554 } while (t != null);
555 }
556 else {
557 if (key == null)
558 throw new NullPointerException();
559 Comparable<? super K> k = (Comparable<? super K>) key;
560 do {
561 parent = t;
562 cmp = k.compareTo(t.key);
563 if (cmp < 0)
564 t = t.left;
565 else if (cmp > 0)
566 t = t.right;
567 else
568 return t.setValue(value);
569 } while (t != null);
570 }
571 Entry<K,V> e = new Entry<K,V>(key, value, parent);
572 if (cmp < 0)
573 parent.left = e;
574 else
575 parent.right = e;
576 fixAfterInsertion(e);
577 size++;
578 modCount++;
579 return null;
580 } |
Partager