--- jsr166/src/main/java/util/TreeMap.java 2004/12/28 12:14:07 1.1 +++ jsr166/src/main/java/util/TreeMap.java 2004/12/31 13:00:33 1.2 @@ -664,7 +664,7 @@ public class TreeMap */ public Map.Entry firstEntry() { Entry e = getFirstEntry(); - return (e == null)? null : new SnapshotEntry(e); + return (e == null)? null : new AbstractMap.SimpleImmutableEntry(e); } /** @@ -678,7 +678,7 @@ public class TreeMap */ public Map.Entry lastEntry() { Entry e = getLastEntry(); - return (e == null)? null : new SnapshotEntry(e); + return (e == null)? null : new AbstractMap.SimpleImmutableEntry(e); } /** @@ -692,7 +692,7 @@ public class TreeMap Entry p = getFirstEntry(); if (p == null) return null; - Map.Entry result = new SnapshotEntry(p); + Map.Entry result = new AbstractMap.SimpleImmutableEntry(p); deleteEntry(p); return result; } @@ -708,7 +708,7 @@ public class TreeMap Entry p = getLastEntry(); if (p == null) return null; - Map.Entry result = new SnapshotEntry(p); + Map.Entry result = new AbstractMap.SimpleImmutableEntry(p); deleteEntry(p); return result; } @@ -729,7 +729,7 @@ public class TreeMap */ public Map.Entry ceilingEntry(K key) { Entry e = getCeilingEntry(key); - return (e == null)? null : new SnapshotEntry(e); + return (e == null)? null : new AbstractMap.SimpleImmutableEntry(e); } @@ -769,7 +769,7 @@ public class TreeMap */ public Map.Entry floorEntry(K key) { Entry e = getFloorEntry(key); - return (e == null)? null : new SnapshotEntry(e); + return (e == null)? null : new AbstractMap.SimpleImmutableEntry(e); } /** @@ -807,7 +807,7 @@ public class TreeMap */ public Map.Entry higherEntry(K key) { Entry e = getHigherEntry(key); - return (e == null)? null : new SnapshotEntry(e); + return (e == null)? null : new AbstractMap.SimpleImmutableEntry(e); } /** @@ -844,7 +844,7 @@ public class TreeMap */ public Map.Entry lowerEntry(K key) { Entry e = getLowerEntry(key); - return (e == null)? null : new SnapshotEntry(e); + return (e == null)? null : new AbstractMap.SimpleImmutableEntry(e); } /** @@ -1308,7 +1308,7 @@ public class TreeMap getFirstEntry() : getCeilingEntry(fromKey); if (e == null || (!fromStart && compare(e.key, fromKey) < 0)) return null; - Map.Entry result = new SnapshotEntry(e); + Map.Entry result = new AbstractMap.SimpleImmutableEntry(e); deleteEntry(e); return result; } @@ -1318,7 +1318,7 @@ public class TreeMap getLastEntry() : getLowerEntry(toKey); if (e == null || (!toEnd && compare(e.key, toKey) >= 0)) return null; - Map.Entry result = new SnapshotEntry(e); + Map.Entry result = new AbstractMap.SimpleImmutableEntry(e); deleteEntry(e); return result; } @@ -1333,7 +1333,7 @@ public class TreeMap public Map.Entry ceilingEntry(K key) { TreeMap.Entry e = subceiling(key); - return e == null? null : new SnapshotEntry(e); + return e == null? null : new AbstractMap.SimpleImmutableEntry(e); } public K ceilingKey(K key) { @@ -1352,7 +1352,7 @@ public class TreeMap public Map.Entry higherEntry(K key) { TreeMap.Entry e = subhigher(key); - return e == null? null : new SnapshotEntry(e); + return e == null? null : new AbstractMap.SimpleImmutableEntry(e); } public K higherKey(K key) { @@ -1370,7 +1370,7 @@ public class TreeMap public Map.Entry floorEntry(K key) { TreeMap.Entry e = subfloor(key); - return e == null? null : new SnapshotEntry(e); + return e == null? null : new AbstractMap.SimpleImmutableEntry(e); } public K floorKey(K key) { @@ -1388,7 +1388,7 @@ public class TreeMap public Map.Entry lowerEntry(K key) { TreeMap.Entry e = sublower(key); - return e == null? null : new SnapshotEntry(e); + return e == null? null : new AbstractMap.SimpleImmutableEntry(e); } public K lowerKey(K key) { @@ -2260,54 +2260,4 @@ public class TreeMap return level; } - - /** - * Entry holding a snapshot of a key-value pair - */ - static class SnapshotEntry implements Map.Entry { - final K key; - final V value; - - public SnapshotEntry(Entry e) { - this.key = e.getKey(); - this.value = e.getValue(); - } - - public K getKey() { - return key; - } - - public V getValue() { - return value; - } - - /** - * Always fails, throwing UnsupportedOperationException. - * @throws UnsupportedOperationException always. - */ - public V setValue(V value) { - throw new UnsupportedOperationException(); - } - - public boolean equals(Object o) { - if (!(o instanceof Map.Entry)) - return false; - Map.Entry e = (Map.Entry)o; - return eq(key, e.getKey()) && eq(value, e.getValue()); - } - - public int hashCode() { - return ((key == null) ? 0 : key.hashCode()) ^ - ((value == null) ? 0 : value.hashCode()); - } - - public String toString() { - return key + "=" + value; - } - - private static boolean eq(Object o1, Object o2) { - return (o1 == null ? o2 == null : o1.equals(o2)); - } - } - }