/** {@inheritDoc} */ @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof WeakReferenceElement)) return false; E thisReft = get(); Object thatReft = ((Reference)o).get(); return thisReft != null ? thisReft.equals(thatReft) : thatReft == null; }
/** {@inheritDoc} */ @SuppressWarnings({"SuspiciousToArrayCall"}) @Override public <T> T[] toArray(T[] a) { removeStale(); Collection<E> elems = new LinkedList<>(); for (WeakReferenceElement<E> ref : store) { E e = ref.get(); if (e != null) elems.add(e); } return elems.toArray(a); }
/** {@inheritDoc} */ @Override public boolean hasNext() { if (elem == null) { while (iter.hasNext()) { WeakReferenceElement<E> ref = iter.next(); E e; if (ref != null && (e = ref.get()) != null) { elem = e; break; } else removeStale(); } } return elem != null; }
/** {@inheritDoc} */ @Override public boolean hasNext() { if (elem == null) { while (iter.hasNext()) { WeakReferenceElement<E> ref = iter.next(); E e; if (ref != null && (e = ref.get()) != null) { elem = e; break; } else removeStale(); } } return elem != null; }
/** {@inheritDoc} */ @Override public boolean retainAll(@Nullable Collection<?> c) { removeStale(); boolean res = false; if (!F.isEmpty(c)) { assert c != null; Iterator<WeakReferenceElement<E>> iter = store.iterator(); while (iter.hasNext()) { if (!c.contains(iter.next().get())) { iter.remove(); res = true; } } } return res; }
/** {@inheritDoc} */ @Override public boolean remove(@Nullable Object o) { removeStale(); if (o != null) { for (Iterator<WeakReferenceElement<E>> iter = store.iterator(); iter.hasNext();) { Object reft = iter.next().get(); if (reft != null && reft.equals(o)) { iter.remove(); return true; } } } return false; }
/** {@inheritDoc} */ @Override public boolean contains(@Nullable Object o) { removeStale(); if (!store.isEmpty() && o != null) { for (WeakReferenceElement ref : store) { Object reft = ref.get(); if (reft != null && reft.equals(o)) return true; } } return false; }
/** * Removes stale references. */ private void removeStale() { WeakReferenceElement<E> ref; while ((ref = (WeakReferenceElement<E>) gcQ.poll()) != null) { store.remove(ref); onGc(ref.get()); } }
/** {@inheritDoc} */ @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof WeakReferenceElement)) return false; E thisReft = get(); Object thatReft = ((Reference)o).get(); return thisReft != null ? thisReft.equals(thatReft) : thatReft == null; }
/** {@inheritDoc} */ @SuppressWarnings({"SuspiciousToArrayCall"}) @Override public <T> T[] toArray(T[] a) { removeStale(); Collection<E> elems = new LinkedList<>(); for (WeakReferenceElement<E> ref : store) { E e = ref.get(); if (e != null) elems.add(e); } return elems.toArray(a); }
/** {@inheritDoc} */ @Override public boolean retainAll(@Nullable Collection<?> c) { removeStale(); boolean res = false; if (!F.isEmpty(c)) { assert c != null; Iterator<WeakReferenceElement<E>> iter = store.iterator(); while (iter.hasNext()) { if (!c.contains(iter.next().get())) { iter.remove(); res = true; } } } return res; }
/** {@inheritDoc} */ @Override public boolean remove(@Nullable Object o) { removeStale(); if (o != null) { for (Iterator<WeakReferenceElement<E>> iter = store.iterator(); iter.hasNext();) { Object reft = iter.next().get(); if (reft != null && reft.equals(o)) { iter.remove(); return true; } } } return false; }
/** * Removes stale references. */ private void removeStale() { WeakReferenceElement<E> ref; while ((ref = (WeakReferenceElement<E>) gcQ.poll()) != null) { store.remove(ref); onGc(ref.get()); } }
/** {@inheritDoc} */ @Override public boolean contains(@Nullable Object o) { removeStale(); if (!store.isEmpty() && o != null) { for (WeakReferenceElement ref : store) { Object reft = ref.get(); if (reft != null && reft.equals(o)) return true; } } return false; }