@Override public V get(Object key) { int index = index(key); if (index >= 0) { // key is present return (V) table[index + 1]; } else { // key is absent return null; } }
@Override public V getOrDefault(Object key, V defaultValue) { int index = index(key); if (index >= 0) { // key is present return (V) table[index + 1]; } else { // key is absent return defaultValue; } }
@Override public V getOrDefault(Object key, V defaultValue) { int index = index(key); if (index >= 0) { // key is present return (V) table[index + 1]; } else { // key is absent return defaultValue; } }
@Override public V get(Object key) { int index = index(key); if (index >= 0) { // key is present return (V) table[index + 1]; } else { // key is absent return null; } }
@Override public V replace(K key, V value) { int index = index(key); if (index >= 0) { // key is present Object[] tab = table; V oldValue = (V) tab[index + 1]; tab[index + 1] = value; return oldValue; } else { // key is absent return null; } }
@Override public V replace(K key, V value) { int index = index(key); if (index >= 0) { // key is present Object[] tab = table; V oldValue = (V) tab[index + 1]; tab[index + 1] = value; return oldValue; } else { // key is absent return null; } }
@Override public boolean containsEntry(Object key, Object value) { int index = index(key); if (index >= 0) { // key is present return nullableValueEquals((V) table[index + 1], (V) value); } else { // key is absent return false; } }
@Override public boolean containsEntry(Object key, Object value) { int index = index(key); if (index >= 0) { // key is present return nullableValueEquals((V) table[index + 1], (V) value); } else { // key is absent return false; } }
@Override public boolean replace(K key, V oldValue, V newValue) { int index = index(key); if (index >= 0) { // key is present Object[] tab = table; if (nullableValueEquals((V) tab[index + 1], (V) oldValue)) { tab[index + 1] = newValue; return true; } else { return false; } } else { // key is absent return false; } }
@Override public boolean replace(K key, V oldValue, V newValue) { int index = index(key); if (index >= 0) { // key is present Object[] tab = table; if (nullableValueEquals((V) tab[index + 1], (V) oldValue)) { tab[index + 1] = newValue; return true; } else { return false; } } else { // key is absent return false; } }
@Override public V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) { if (remappingFunction == null) throw new java.lang.NullPointerException(); int index = index(key); if (index >= 0) { // key is present Object[] tab = table; V val; if ((val = (V) tab[index + 1]) != null) { V newValue = remappingFunction.apply(key, val); if (newValue != null) { tab[index + 1] = newValue; return newValue; } else { incrementModCount(); table[index] = REMOVED; tab[index + 1] = null; postRemoveHook(); return null; } } else { return null; } } else { // key is absent return null; } }
@Override public V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) { if (remappingFunction == null) throw new java.lang.NullPointerException(); int index = index(key); if (index >= 0) { // key is present Object[] tab = table; V val; if ((val = (V) tab[index + 1]) != null) { V newValue = remappingFunction.apply(key, val); if (newValue != null) { tab[index + 1] = newValue; return newValue; } else { incrementModCount(); table[index] = REMOVED; tab[index + 1] = null; postRemoveHook(); return null; } } else { return null; } } else { // key is absent return null; } }