V applyIfPresent(K key, int hash, IBiFunction<? super K, ? super V, ? extends V> remappingFunction) { lock(); try { V oldValue = get(key, hash); if (oldValue == null) { return null; } V newValue = remappingFunction.apply(key, oldValue); if (newValue == null) { removeInternal(key, hash, oldValue, false); return null; } else { putInternal(key, hash, newValue, null, false); return newValue; } } finally { unlock(); } }
V applyIfPresent(K key, int hash, IBiFunction<? super K, ? super V, ? extends V> remappingFunction) { lock(); try { V oldValue = get(key, hash); if (oldValue == null) { return null; } V newValue = remappingFunction.apply(key, oldValue); if (newValue == null) { removeInternal(key, hash, oldValue, false); return null; } else { putInternal(key, hash, newValue, null, false); return newValue; } } finally { unlock(); } }
V merge(K key, V value, int hash, IBiFunction<? super V, ? super V, ? extends V> remappingFunction) { lock(); try { V oldValue = get(key, hash); V newValue = (oldValue == null) ? value : remappingFunction.apply(oldValue, value); if (newValue == null) { removeInternal(key, hash, oldValue, false); return null; } else { putInternal(key, hash, newValue, null, false); return newValue; } } finally { unlock(); } }
V merge(K key, V value, int hash, IBiFunction<? super V, ? super V, ? extends V> remappingFunction) { lock(); try { V oldValue = get(key, hash); V newValue = (oldValue == null) ? value : remappingFunction.apply(oldValue, value); if (newValue == null) { removeInternal(key, hash, oldValue, false); return null; } else { putInternal(key, hash, newValue, null, false); return newValue; } } finally { unlock(); } }
/** * Remove: match on key only if value is null, else match both. */ V remove(Object key, int hash, Object value, boolean refRemove) { lock(); try { return removeInternal(key, hash, value, refRemove); } finally { unlock(); } }
/** * Remove: match on key only if value is null, else match both. */ V remove(Object key, int hash, Object value, boolean refRemove) { lock(); try { return removeInternal(key, hash, value, refRemove); } finally { unlock(); } }