V get(Object key, int hash) { if(count != 0) { // read-volatile HashEntry<K, V> e = getFirst(hash); while(e != null) { if(e.hash == hash && key.equals(e.keyRef.get())) { V v = e.value; if(v != null) return v; return readValueUnderLock(e); // recheck } e = e.next; } } return null; }
V get(Object key, int hash) { if(count != 0) { // read-volatile HashEntry<K, V> e = getFirst(hash); while(e != null) { if(e.hash == hash && key.equals(e.keyRef.get())) { V v = e.value; if(v != null) return v; return readValueUnderLock(e); // recheck } e = e.next; } } return null; }
boolean containsValue(Object value) { if(count != 0) { // read-volatile 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) { V v = e.value; if(v == null) // recheck v = readValueUnderLock(e); if(value.equals(v)) return true; } } } return false; }
boolean containsValue(Object value) { if(count != 0) { // read-volatile 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) { V v = e.value; if(v == null) // recheck v = readValueUnderLock(e); if(value.equals(v)) return true; } } } return false; }