public abstract class ReferencedValueHashMap<K, V> extends AbstractMap<K, V>
implements Map<K, V>, Cloneable
{
+ static final Object NULL = new Comparable() {
+ public int compareTo(Object obj) {
+ return obj == this || obj == null ? 0 : 1;
+ }
+ };
+
private transient Entry<K, V>[] table;
private transient int count;
private int threshold;
public boolean containsValue(Object value) {
if (value == null) {
- value = KeyFactory.NULL;
+ value = NULL;
}
Entry[] tab = this.table;
}
count--;
} else if (e.hash == hash && key.equals(e.key)) {
- return (entryValue == KeyFactory.NULL) ? null : entryValue;
+ return (entryValue == NULL) ? null : entryValue;
} else {
prev = e;
}
}
this.count--;
} else if (e.key == null) {
- return (entryValue == KeyFactory.NULL) ? null : entryValue;
+ return (entryValue == NULL) ? null : entryValue;
} else {
prev = e;
}
public V put(K key, V value) {
if (value == null) {
- value = (V) KeyFactory.NULL;
+ value = (V) NULL;
}
// Makes sure the key is not already in the HashMap.
this.count--;
} else if (e.hash == hash && key.equals(e.key)) {
e.setValue(value);
- return (entryValue == KeyFactory.NULL) ? null : entryValue;
+ return (entryValue == NULL) ? null : entryValue;
} else {
prev = e;
}
this.count--;
} else if (e.key == null) {
e.setValue(value);
- return (entryValue == KeyFactory.NULL) ? null : entryValue;
+ return (entryValue == NULL) ? null : entryValue;
} else {
prev = e;
}
this.count--;
e.setValue(null);
- return (entryValue == KeyFactory.NULL) ? null : entryValue;
+ return (entryValue == NULL) ? null : entryValue;
} else {
prev = e;
}
this.count--;
e.setValue(null);
- return (entryValue == KeyFactory.NULL) ? null : entryValue;
+ return (entryValue == NULL) ? null : entryValue;
} else {
prev = e;
}
public V getValue() {
V value = this.value.get();
- return value == KeyFactory.NULL ? null : value;
+ return value == NULL ? null : value;
}
public V setValue(V value) {
V oldValue = getValue();
- this.value = newReference(value == null ? ((V) KeyFactory.NULL) : value);
+ this.value = newReference(value == null ? ((V) NULL) : value);
return oldValue;
}
Object thisValue = get();
if (thisValue == null) {
return false;
- } else if (thisValue == KeyFactory.NULL) {
+ } else if (thisValue == NULL) {
thisValue = null;
}
return (this.key == null ? e.getKey() == null : this.key.equals(e.getKey())) &&