@Override public final T next() { T next = strongNext; advance(); return next; }
@Override public boolean contains(Object o) { return ConcurrentWeakIdentityHashMap.this.containsKey(o); }
private WeakReference<K> newKey(final K key) { return new WeakReference<>(key, queue); }
@Override public V get(final Object key) { purgeKeys(); return map.get(new WeakReference<>(key, null)); }
@Override public int size() { purgeKeys(); return map.size(); }
private void updateProvidedInstanceCounts(Serializer<?> serializer) { AtomicInteger currentCount = providedVsCount.putIfAbsent(serializer, new AtomicInteger(1)); if(currentCount != null) { currentCount.incrementAndGet(); } }
private void advance() { while (weakIterator.hasNext()) { U nextU = weakIterator.next(); if ((strongNext = extract(nextU)) != null) { return; } } strongNext = null; }
@Override public boolean remove(final Object key, final Object value) { purgeKeys(); return map.remove(new WeakReference<>(key, null), value); }
@Override public Collection<V> values() { purgeKeys(); return map.values(); }
public WeakSafeIterator(Iterator<U> weakIterator) { this.weakIterator = weakIterator; advance(); }
@Override public boolean containsKey(final Object key) { purgeKeys(); return map.containsKey(new WeakReference<>(key, null)); }
@Override public boolean isEmpty() { purgeKeys(); return map.isEmpty(); }
@Override public V remove(final Object key) { purgeKeys(); return map.remove(new WeakReference<>(key, null)); }
@Override public void clear() { purgeKeys(); map.clear(); }
@Override public boolean containsValue(final Object value) { purgeKeys(); return map.containsValue(value); }