void clear() { long stamp = writeLock(); try { Arrays.fill(values, EmptyValue); this.size = 0; this.usedBuckets = 0; } finally { unlockWrite(stamp); } }
int removeIf(Predicate<V> filter) { long stamp = writeLock(); int removedCount = 0; try { // Go through all the buckets for this section for (int bucket = capacity - 1; bucket >= 0; bucket--) { V storedValue = values[bucket]; if (storedValue != DeletedValue && storedValue != EmptyValue) { if (filter.test(storedValue)) { // Removing item --size; ++removedCount; cleanBucket(bucket); } } } return removedCount; } finally { unlockWrite(stamp); } }
private boolean remove(V value, int keyHash) { int bucket = keyHash; long stamp = writeLock(); try { while (true) { int capacity = this.capacity; bucket = signSafeMod(bucket, capacity); V storedValue = values[bucket]; if (value.equals(storedValue)) { --size; cleanBucket(bucket); return true; } else if (storedValue == EmptyValue) { // Value wasn't found return false; } ++bucket; } } finally { unlockWrite(stamp); } }
boolean add(V value, int keyHash) { int bucket = keyHash; long stamp = writeLock(); int capacity = this.capacity;
private boolean remove(V value, int keyHash) { int bucket = keyHash; long stamp = writeLock(); try { while (true) { int capacity = this.capacity; bucket = signSafeMod(bucket, capacity); V storedValue = values[bucket]; if (value.equals(storedValue)) { --size; cleanBucket(bucket); return true; } else if (storedValue == EmptyValue) { // Value wasn't found return false; } ++bucket; } } finally { unlockWrite(stamp); } }
int removeIf(Predicate<V> filter) { long stamp = writeLock(); int removedCount = 0; try { // Go through all the buckets for this section for (int bucket = capacity - 1; bucket >= 0; bucket--) { V storedValue = values[bucket]; if (storedValue != DeletedValue && storedValue != EmptyValue) { if (filter.test(storedValue)) { // Removing item --size; ++removedCount; cleanBucket(bucket); } } } return removedCount; } finally { unlockWrite(stamp); } }
void clear() { long stamp = writeLock(); try { Arrays.fill(values, EmptyValue); this.size = 0; this.usedBuckets = 0; } finally { unlockWrite(stamp); } }
boolean add(V value, int keyHash) { int bucket = keyHash; long stamp = writeLock(); int capacity = this.capacity;