boolean containsValue(Object value) { // read-volatile if (count != 0) { HashEntry<K, V>[] tab = table; int len = tab.length; for (int i = 0; i < len; i++) { for (HashEntry<K, V> e = tab[i]; e != null; e = e.next) { Object opaque = e.valueRef; V v; if (opaque == null) { // recheck v = readValueUnderLock(e); } else { v = e.dereferenceValue(opaque); } if (value.equals(v)) { return true; } } } } return false; }
boolean containsValue(Object value) { // read-volatile if (count != 0) { HashEntry<K, V>[] tab = table; int len = tab.length; for (int i = 0; i < len; i++) { for (HashEntry<K, V> e = tab[i]; e != null; e = e.next) { Object opaque = e.valueRef; V v; if (opaque == null) { // recheck v = readValueUnderLock(e); } else { v = e.dereferenceValue(opaque); } if (value.equals(v)) { return true; } } } } return false; }
V get(Object key, int hash) { // read-volatile if (count != 0) { HashEntry<K, V> e = getFirst(hash); while (e != null) { if (e.hash == hash && keyEq(key, e.key())) { Object opaque = e.valueRef; if (opaque != null) { return e.dereferenceValue(opaque); } // recheck return readValueUnderLock(e); } e = e.next; } } return null; }
V get(Object key, int hash) { // read-volatile if (count != 0) { HashEntry<K, V> e = getFirst(hash); while (e != null) { if (e.hash == hash && keyEq(key, e.key())) { Object opaque = e.valueRef; if (opaque != null) { return e.dereferenceValue(opaque); } // recheck return readValueUnderLock(e); } e = e.next; } } return null; }