private int nullValueIndex() { if (isEmpty()) return -1; int index = -1; int mc = modCount(); short free = freeValue; short[] keys = set; V[] vals = values; for (int i = keys.length - 1; i >= 0; i--) { if (keys[i] != free) { if (vals[i] == null) { index = i; break; } } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); return index; }
private int nullValueIndex() { if (isEmpty()) return -1; int index = -1; int mc = modCount(); short free = freeValue; short[] keys = set; V[] vals = values; for (int i = keys.length - 1; i >= 0; i--) { if (keys[i] != free) { if (vals[i] == null) { index = i; break; } } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); return index; }
int valueIndex(@Nullable Object value) { if (value == null) return nullValueIndex(); if (isEmpty()) return -1; V val = (V) value; int index = -1; int mc = modCount(); short free = freeValue; short[] keys = set; V[] vals = values; for (int i = keys.length - 1; i >= 0; i--) { if (keys[i] != free) { if (valueEquals(val, vals[i])) { index = i; break; } } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); return index; }
int valueIndex(@Nullable Object value) { if (value == null) return nullValueIndex(); if (isEmpty()) return -1; V val = (V) value; int index = -1; int mc = modCount(); short free = freeValue; short[] keys = set; V[] vals = values; for (int i = keys.length - 1; i >= 0; i--) { if (keys[i] != free) { if (valueEquals(val, vals[i])) { index = i; break; } } } if (mc != modCount()) throw new java.util.ConcurrentModificationException(); return index; }