this.segments[i] = new Segment<>(cap, loadFactor);
boolean replace(K key1, K key2, K key3, K key4, int hash, V oldValue, V newValue) { lock(); try { HashEntry<K, V> e = getFirst(hash); while (e != null && (e.hash != hash || key1 != null && !key1.equals(e.key1) || key2 != null && !key2.equals(e.key2) || key3 != null && !key3.equals(e.key3) || key4 != null && !key4.equals(e.key4))) { e = e.next; } boolean replaced = false; if (e != null && oldValue.equals(e.value)) { replaced = true; e.value = newValue; } return replaced; } finally { unlock(); } }
/** * @see #put(Object, Object) */ public V put(K key1, K key2, V value) { if (value == null) { throw new NullPointerException(); } int hash = hash(key1, key2, null, null); return segmentFor(hash).put(key1, key2, null, null, hash, value, false); }
for (int i = 0; i < segments.length; ++i) { mcsum += mc[i] = segments[i].modCount; if (segments[i].containsValue(value)) { return true; segments[i].lock(); if (segments[i].containsValue(value)) { found = true; break; segments[i].unlock();
for (int i = 0; i < segments.length; ++i) { mcsum += mc[i] = segments[i].modCount; if (segments[i].containsValue(value)) { return true; segments[i].lock(); if (segments[i].containsValue(value)) { found = true; break; segments[i].unlock();
for (int i = 0; i < segments.length; ++i) { mcsum += mc[i] = segments[i].modCount; if (segments[i].containsValue(value)) { return true; segments[i].lock(); if (segments[i].containsValue(value)) { found = true; break; segments[i].unlock();
this.segments[i] = new Segment<>(cap, loadFactor);
for (int i = 0; i < segments.length; ++i) { mcsum += mc[i] = segments[i].modCount; if (segments[i].containsValue(value)) { return true; segments[i].lock(); if (segments[i].containsValue(value)) { found = true; break; segments[i].unlock();
this.segments[i] = new Segment<K, V>(cap, loadFactor);
this.segments[i] = new Segment<>(cap, loadFactor);
boolean replace(K key1, K key2, K key3, K key4, int hash, V oldValue, V newValue) { lock(); try { HashEntry<K, V> e = getFirst(hash); while (e != null && (e.hash != hash || key1 != null && !key1.equals(e.key1) || key2 != null && !key2.equals(e.key2) || key3 != null && !key3.equals(e.key3) || key4 != null && !key4.equals(e.key4))) { e = e.next; } boolean replaced = false; if (e != null && oldValue.equals(e.value)) { replaced = true; e.value = newValue; } return replaced; } finally { unlock(); } }
boolean replace(K key1, K key2, K key3, K key4, int hash, V oldValue, V newValue) { lock(); try { HashEntry<K, V> e = getFirst(hash); while (e != null && (e.hash != hash || key1 != null && !key1.equals(e.key1) || key2 != null && !key2.equals(e.key2) || key3 != null && !key3.equals(e.key3) || key4 != null && !key4.equals(e.key4))) { e = e.next; } boolean replaced = false; if (e != null && oldValue.equals(e.value)) { replaced = true; e.value = newValue; } return replaced; } finally { unlock(); } }
boolean replace(K key1, K key2, K key3, K key4, int hash, V oldValue, V newValue) { lock(); try { HashEntry<K, V> e = getFirst(hash); while (e != null && (e.hash != hash || key1 != null && !key1.equals(e.key1) || key2 != null && !key2.equals(e.key2) || key3 != null && !key3.equals(e.key3) || key4 != null && !key4.equals(e.key4))) { e = e.next; } boolean replaced = false; if (e != null && oldValue.equals(e.value)) { replaced = true; e.value = newValue; } return replaced; } finally { unlock(); } }
boolean containsValue(Object value) { if (count != 0) { // read-volatile HashEntry[] tab = table; int len = tab.length; for (int i = 0; i < len; i++) { for (//noinspection unchecked HashEntry<K, V> e = (HashEntry<K, V>) 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; }