645 |
|
|
646 |
|
public Map.Entry<K,V> firstEntry() { |
647 |
|
Entry<K,V> e = getFirstEntry(); |
648 |
< |
return (e == null)? null : new AbstractMap.SimpleImmutableEntry(e); |
648 |
> |
return (e == null)? null : new AbstractMap.SimpleImmutableEntry<K,V>(e); |
649 |
|
} |
650 |
|
|
651 |
|
public Map.Entry<K,V> lastEntry() { |
652 |
|
Entry<K,V> e = getLastEntry(); |
653 |
< |
return (e == null)? null : new AbstractMap.SimpleImmutableEntry(e); |
653 |
> |
return (e == null)? null : new AbstractMap.SimpleImmutableEntry<K,V>(e); |
654 |
|
} |
655 |
|
|
656 |
|
public Map.Entry<K,V> pollFirstEntry() { |
657 |
|
Entry<K,V> p = getFirstEntry(); |
658 |
|
if (p == null) |
659 |
|
return null; |
660 |
< |
Map.Entry result = new AbstractMap.SimpleImmutableEntry(p); |
660 |
> |
Map.Entry<K,V> result = new AbstractMap.SimpleImmutableEntry<K,V>(p); |
661 |
|
deleteEntry(p); |
662 |
|
return result; |
663 |
|
} |
666 |
|
Entry<K,V> p = getLastEntry(); |
667 |
|
if (p == null) |
668 |
|
return null; |
669 |
< |
Map.Entry result = new AbstractMap.SimpleImmutableEntry(p); |
669 |
> |
Map.Entry<K,V> result = new AbstractMap.SimpleImmutableEntry<K,V>(p); |
670 |
|
deleteEntry(p); |
671 |
|
return result; |
672 |
|
} |
679 |
|
*/ |
680 |
|
public Map.Entry<K,V> lowerEntry(K key) { |
681 |
|
Entry<K,V> e = getLowerEntry(key); |
682 |
< |
return (e == null)? null : new AbstractMap.SimpleImmutableEntry(e); |
682 |
> |
return (e == null)? null : new AbstractMap.SimpleImmutableEntry<K,V>(e); |
683 |
|
} |
684 |
|
|
685 |
|
/** |
701 |
|
*/ |
702 |
|
public Map.Entry<K,V> floorEntry(K key) { |
703 |
|
Entry<K,V> e = getFloorEntry(key); |
704 |
< |
return (e == null)? null : new AbstractMap.SimpleImmutableEntry(e); |
704 |
> |
return (e == null)? null : new AbstractMap.SimpleImmutableEntry<K,V>(e); |
705 |
|
} |
706 |
|
|
707 |
|
/** |
723 |
|
*/ |
724 |
|
public Map.Entry<K,V> ceilingEntry(K key) { |
725 |
|
Entry<K,V> e = getCeilingEntry(key); |
726 |
< |
return (e == null)? null : new AbstractMap.SimpleImmutableEntry(e); |
726 |
> |
return (e == null)? null : new AbstractMap.SimpleImmutableEntry<K,V>(e); |
727 |
|
} |
728 |
|
|
729 |
|
/** |
745 |
|
*/ |
746 |
|
public Map.Entry<K,V> higherEntry(K key) { |
747 |
|
Entry<K,V> e = getHigherEntry(key); |
748 |
< |
return (e == null)? null : new AbstractMap.SimpleImmutableEntry(e); |
748 |
> |
return (e == null)? null : new AbstractMap.SimpleImmutableEntry<K,V>(e); |
749 |
|
} |
750 |
|
|
751 |
|
/** |
1128 |
|
getFirstEntry() : getCeilingEntry(fromKey); |
1129 |
|
if (e == null || (!toEnd && compare(e.key, toKey) >= 0)) |
1130 |
|
return null; |
1131 |
< |
Map.Entry result = new AbstractMap.SimpleImmutableEntry(e); |
1131 |
> |
Map.Entry<K,V> result = new AbstractMap.SimpleImmutableEntry<K,V>(e); |
1132 |
|
deleteEntry(e); |
1133 |
|
return result; |
1134 |
|
} |
1138 |
|
getLastEntry() : getLowerEntry(toKey); |
1139 |
|
if (e == null || (!fromStart && compare(e.key, fromKey) < 0)) |
1140 |
|
return null; |
1141 |
< |
Map.Entry result = new AbstractMap.SimpleImmutableEntry(e); |
1141 |
> |
Map.Entry<K,V> result = new AbstractMap.SimpleImmutableEntry<K,V>(e); |
1142 |
|
deleteEntry(e); |
1143 |
|
return result; |
1144 |
|
} |
1153 |
|
|
1154 |
|
public Map.Entry<K,V> ceilingEntry(K key) { |
1155 |
|
TreeMap.Entry<K,V> e = subceiling(key); |
1156 |
< |
return e == null? null : new AbstractMap.SimpleImmutableEntry(e); |
1156 |
> |
return e == null? null : new AbstractMap.SimpleImmutableEntry<K,V>(e); |
1157 |
|
} |
1158 |
|
|
1159 |
|
public K ceilingKey(K key) { |
1172 |
|
|
1173 |
|
public Map.Entry<K,V> higherEntry(K key) { |
1174 |
|
TreeMap.Entry<K,V> e = subhigher(key); |
1175 |
< |
return e == null? null : new AbstractMap.SimpleImmutableEntry(e); |
1175 |
> |
return e == null? null : new AbstractMap.SimpleImmutableEntry<K,V>(e); |
1176 |
|
} |
1177 |
|
|
1178 |
|
public K higherKey(K key) { |
1190 |
|
|
1191 |
|
public Map.Entry<K,V> floorEntry(K key) { |
1192 |
|
TreeMap.Entry<K,V> e = subfloor(key); |
1193 |
< |
return e == null? null : new AbstractMap.SimpleImmutableEntry(e); |
1193 |
> |
return e == null? null : new AbstractMap.SimpleImmutableEntry<K,V>(e); |
1194 |
|
} |
1195 |
|
|
1196 |
|
public K floorKey(K key) { |
1208 |
|
|
1209 |
|
public Map.Entry<K,V> lowerEntry(K key) { |
1210 |
|
TreeMap.Entry<K,V> e = sublower(key); |
1211 |
< |
return e == null? null : new AbstractMap.SimpleImmutableEntry(e); |
1211 |
> |
return e == null? null : new AbstractMap.SimpleImmutableEntry<K,V>(e); |
1212 |
|
} |
1213 |
|
|
1214 |
|
public K lowerKey(K key) { |
1513 |
|
/** |
1514 |
|
* Compares two keys using the correct comparison method for this TreeMap. |
1515 |
|
*/ |
1516 |
< |
private int compare(K k1, K k2) { |
1517 |
< |
return comparator==null ? ((Comparable<? super K>)k1).compareTo(k2) |
1518 |
< |
: comparator.compare(k1, k2); |
1516 |
> |
private int compare(Object k1, Object k2) { |
1517 |
> |
return comparator==null ? ((Comparable<? super K>)k1).compareTo((K)k2) |
1518 |
> |
: comparator.compare((K)k1, (K)k2); |
1519 |
|
} |
1520 |
|
|
1521 |
|
/** |