@Override public void clear() { doClear(); }
@Override void removeAt(int index) { incrementModCount(); super.removeAt(index); values[index] = null; postRemoveHook(); }
@Override public boolean containsEntry(short key, Object value) { int index = index(key); if (index >= 0) { // key is present return nullableValueEquals(values[index], (V) value); } else { // key is absent return false; } }
if (filter == null) throw new java.lang.NullPointerException(); if (this.isEmpty()) return false; boolean changed = false; int mc = modCount(); short free = freeValue; short removed = removedValue; short[] keys = set; V[] vals = values; if (noRemoved()) { for (int i = keys.length - 1; i >= 0; i--) { short key; if ((key = keys[i]) != free) { if (filter.test(key)) { incrementModCount(); mc++; keys[i] = removed; vals[i] = null; postRemoveHook(); changed = true; if ((key = keys[i]) != free && key != removed) { if (filter.test(key)) { incrementModCount(); mc++; keys[i] = removed; vals[i] = null; postRemoveHook();
short removed = removedValue; if (key == (free = freeValue)) { free = changeFree(); } else if (key == removed) { removed = changeRemoved(); int firstRemoved; if (cur != removed) { if (noRemoved()) { int bIndex = index, fIndex = index, step = 1; while (true) { incrementModCount(); keys[firstRemoved] = key; vals[firstRemoved] = value; postRemovedSlotInsertHook(); return value; incrementModCount(); keys[index] = key; vals[index] = value; postFreeSlotInsertHook(); return value; return newValue; } else { incrementModCount(); keys[index] = removed; vals[index] = null;
@Override public void forEach(BiConsumer<? super Short, ? super V> action) { if (action == null) throw new java.lang.NullPointerException(); if (this.isEmpty()) return; int mc = modCount(); short free = freeValue; short removed = removedValue; short[] keys = set; V[] vals = values; if (noRemoved()) { for (int i = keys.length - 1; i >= 0; i--) { short key; if ((key = keys[i]) != free) { action.accept(key, vals[i]); } } } else { for (int i = keys.length - 1; i >= 0; i--) { short key; if ((key = keys[i]) != free && key != removed) { action.accept(key, vals[i]); } } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
if (remappingFunction == null) throw new java.lang.NullPointerException(); int index = index(k); if (index >= 0) { return newValue; } else { incrementModCount(); set[index] = removedValue; vals[index] = null; postRemoveHook(); return null;
@Override public String toString() { if (this.isEmpty()) return "{}"; StringBuilder sb = new StringBuilder(); int elementCount = 0; int mc = modCount(); short free = freeValue; short removed = removedValue; short[] keys = set; V[] vals = values; if (noRemoved()) { for (int i = keys.length - 1; i >= 0; i--) { short key; sb.append(','); if (++elementCount == 8) { int expectedLength = sb.length() * (size() / 8); sb.ensureCapacity(expectedLength + (expectedLength / 2)); sb.append(','); if (++elementCount == 8) { int expectedLength = sb.length() * (size() / 8); sb.ensureCapacity(expectedLength + (expectedLength / 2)); if (mc != modCount()) throw new java.util.ConcurrentModificationException(); sb.setCharAt(0, '{');
if (nullableValueEquals(vals[index], (V) value)) { incrementModCount(); keys[index] = removed; vals[index] = null; postRemoveHook(); return true; } else {
@Override void rehash(int newCapacity) { int mc = modCount(); short free = freeValue; short removed = removedValue; short[] keys = set; V[] vals = values; initForRehash(newCapacity); if (noRemoved()) { for (int i = keys.length - 1; i >= 0; i--) { short key; if (mc != modCount()) throw new java.util.ConcurrentModificationException();
@Override public V getOrDefault(Object key, V defaultValue) { int index = index((Short) key); if (index >= 0) { // key is present return values[index]; } else { // key is absent return defaultValue; } }
@Override public V putIfAbsent(Short key, V value) { int index = insert(key, value); if (index < 0) { // key was absent return null; } else { // key is present return values[index]; } }
@Override MutableQHashSeparateKVShortObjMapGO<V> createNewMutable( int expectedSize, short free, short removed) { MutableQHashSeparateKVShortObjMapGO<V> map = uninitializedMutableMap(); map.init(configWrapper, expectedSize, free, removed); return map; }
@Override public boolean retainAll(@Nonnull HashShortSet thisC, @Nonnull Collection<?> c) { if (c instanceof ShortCollection) return retainAll(thisC, (ShortCollection) c); if (thisC == (Object) c) throw new IllegalArgumentException(); if (this.isEmpty()) return false; if (c.isEmpty()) { clear(); return true; int mc = modCount(); short free = freeValue; short removed = removedValue; short[] keys = set; V[] vals = values; if (noRemoved()) { for (int i = keys.length - 1; i >= 0; i--) { short key; if ((key = keys[i]) != free) { if (!c.contains(key)) { incrementModCount(); mc++; keys[i] = removed; vals[i] = null; postRemoveHook(); changed = true; if ((key = keys[i]) != free && key != removed) {
short removed = removedValue; if (k == (free = freeValue)) { free = changeFree(); } else if (k == removed) { removed = changeRemoved(); int firstRemoved; if (cur != removed) { if (noRemoved()) { int bIndex = index, fIndex = index, step = 1; while (true) { incrementModCount(); keys[firstRemoved] = k; vals[firstRemoved] = newValue; postRemovedSlotInsertHook(); return newValue; } else { incrementModCount(); keys[index] = k; vals[index] = newValue; postFreeSlotInsertHook(); return newValue; } else { return newValue; } else { incrementModCount();
@Override public void replaceAll( BiFunction<? super Short, ? super V, ? extends V> function) { if (function == null) throw new java.lang.NullPointerException(); if (this.isEmpty()) return; int mc = modCount(); short free = freeValue; short removed = removedValue; short[] keys = set; V[] vals = values; if (noRemoved()) { for (int i = keys.length - 1; i >= 0; i--) { short key; if ((key = keys[i]) != free) { vals[i] = function.apply(key, vals[i]); } } } else { for (int i = keys.length - 1; i >= 0; i--) { short key; if ((key = keys[i]) != free && key != removed) { vals[i] = function.apply(key, vals[i]); } } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); }
@Override public V computeIfPresent(short key, ShortObjFunction<? super V, ? extends V> remappingFunction) { if (remappingFunction == null) throw new java.lang.NullPointerException(); int index = index(key); if (index >= 0) { // key is present V[] vals = values; V val; if ((val = vals[index]) != null) { V newValue = remappingFunction.apply(key, val); if (newValue != null) { vals[index] = newValue; return newValue; } else { incrementModCount(); set[index] = removedValue; vals[index] = null; postRemoveHook(); return null; } } else { return null; } } else { // key is absent return null; } }
@Override public String toString() { if (this.isEmpty()) return "{}"; StringBuilder sb = new StringBuilder(); int elementCount = 0; int mc = modCount(); short free = freeValue; short removed = removedValue; short[] keys = set; V[] vals = values; if (noRemoved()) { for (int i = keys.length - 1; i >= 0; i--) { short key; sb.append(','); if (++elementCount == 8) { int expectedLength = sb.length() * (size() / 8); sb.ensureCapacity(expectedLength + (expectedLength / 2)); sb.append(','); if (++elementCount == 8) { int expectedLength = sb.length() * (size() / 8); sb.ensureCapacity(expectedLength + (expectedLength / 2)); if (mc != modCount()) throw new java.util.ConcurrentModificationException(); sb.setCharAt(0, '{');
if (nullableValueEquals(vals[index], (V) value)) { incrementModCount(); keys[index] = removed; vals[index] = null; postRemoveHook(); return true; } else {
@Override void rehash(int newCapacity) { int mc = modCount(); short free = freeValue; short removed = removedValue; short[] keys = set; V[] vals = values; initForRehash(newCapacity); if (noRemoved()) { for (int i = keys.length - 1; i >= 0; i--) { short key; if (mc != modCount()) throw new java.util.ConcurrentModificationException();