boolean removeEntry(int pos, T[] a, int m) { size--; int last; int slot; T curr; for (;;) { last = pos; pos = (pos + 1) & m; for (;;) { curr = a[pos]; if (curr == null) { a[last] = null; return true; } slot = mix(curr.hashCode()) & m; if (last <= pos ? last >= slot || slot > pos : last >= slot && slot > pos) { break; } pos = (pos + 1) & m; } a[last] = curr; } }
boolean removeEntry(int pos, T[] a, int m) { size--; int last; int slot; T curr; for (;;) { last = pos; pos = (pos + 1) & m; for (;;) { curr = a[pos]; if (curr == null) { a[last] = null; return true; } slot = mix(curr.hashCode()) & m; if (last <= pos ? last >= slot || slot > pos : last >= slot && slot > pos) { break; } pos = (pos + 1) & m; } a[last] = curr; } }
boolean removeEntry(int pos, T[] a, int m) { size--; int last; int slot; T curr; for (;;) { last = pos; pos = (pos + 1) & m; for (;;) { curr = a[pos]; if (curr == null) { a[last] = null; return true; } slot = mix(curr.hashCode()) & m; if (last <= pos ? last >= slot || slot > pos : last >= slot && slot > pos) { break; } pos = (pos + 1) & m; } a[last] = curr; } }
@SuppressWarnings("unchecked") void rehash() { T[] a = keys; int i = a.length; int newCap = i << 1; int m = newCap - 1; T[] b = (T[])new Object[newCap]; for (int j = size; j-- != 0; ) { while (a[--i] == null) { } // NOPMD int pos = mix(a[i].hashCode()) & m; if (b[pos] != null) { for (;;) { pos = (pos + 1) & m; if (b[pos] == null) { break; } } } b[pos] = a[i]; } this.mask = m; this.maxSize = (int)(newCap * loadFactor); this.keys = b; }
@SuppressWarnings("unchecked") void rehash() { T[] a = keys; int i = a.length; int newCap = i << 1; int m = newCap - 1; T[] b = (T[])new Object[newCap]; for (int j = size; j-- != 0; ) { while (a[--i] == null) { } // NOPMD int pos = mix(a[i].hashCode()) & m; if (b[pos] != null) { for (;;) { pos = (pos + 1) & m; if (b[pos] == null) { break; } } } b[pos] = a[i]; } this.mask = m; this.maxSize = (int)(newCap * loadFactor); this.keys = b; }
@SuppressWarnings("unchecked") void rehash() { T[] a = keys; int i = a.length; int newCap = i << 1; int m = newCap - 1; T[] b = (T[])new Object[newCap]; for (int j = size; j-- != 0; ) { while (a[--i] == null) { } // NOPMD int pos = mix(a[i].hashCode()) & m; if (b[pos] != null) { for (;;) { pos = (pos + 1) & m; if (b[pos] == null) { break; } } } b[pos] = a[i]; } this.mask = m; this.maxSize = (int)(newCap * loadFactor); this.keys = b; }
public boolean add(T value) { final T[] a = keys; final int m = mask; int pos = mix(value.hashCode()) & m; T curr = a[pos]; if (curr != null) { if (curr.equals(value)) { return false; } for (;;) { pos = (pos + 1) & m; curr = a[pos]; if (curr == null) { break; } if (curr.equals(value)) { return false; } } } a[pos] = value; if (++size >= maxSize) { rehash(); } return true; } public boolean remove(T value) {
public boolean add(T value) { final T[] a = keys; final int m = mask; int pos = mix(value.hashCode()) & m; T curr = a[pos]; if (curr != null) { if (curr.equals(value)) { return false; } for (;;) { pos = (pos + 1) & m; curr = a[pos]; if (curr == null) { break; } if (curr.equals(value)) { return false; } } } a[pos] = value; if (++size >= maxSize) { rehash(); } return true; } public boolean remove(T value) {
public boolean add(T value) { final T[] a = keys; final int m = mask; int pos = mix(value.hashCode()) & m; T curr = a[pos]; if (curr != null) { if (curr.equals(value)) { return false; } for (;;) { pos = (pos + 1) & m; curr = a[pos]; if (curr == null) { break; } if (curr.equals(value)) { return false; } } } a[pos] = value; if (++size >= maxSize) { rehash(); } return true; } public boolean remove(T value) {
public boolean remove(T value) { T[] a = keys; int m = mask; int pos = mix(value.hashCode()) & m; T curr = a[pos]; if (curr == null) { return false; } if (curr.equals(value)) { return removeEntry(pos, a, m); } for (;;) { pos = (pos + 1) & m; curr = a[pos]; if (curr == null) { return false; } if (curr.equals(value)) { return removeEntry(pos, a, m); } } }
public boolean remove(T value) { T[] a = keys; int m = mask; int pos = mix(value.hashCode()) & m; T curr = a[pos]; if (curr == null) { return false; } if (curr.equals(value)) { return removeEntry(pos, a, m); } for (;;) { pos = (pos + 1) & m; curr = a[pos]; if (curr == null) { return false; } if (curr.equals(value)) { return removeEntry(pos, a, m); } } }
public boolean remove(T value) { T[] a = keys; int m = mask; int pos = mix(value.hashCode()) & m; T curr = a[pos]; if (curr == null) { return false; } if (curr.equals(value)) { return removeEntry(pos, a, m); } for (;;) { pos = (pos + 1) & m; curr = a[pos]; if (curr == null) { return false; } if (curr.equals(value)) { return removeEntry(pos, a, m); } } }