/** {@inheritDoc} */ @SuppressWarnings({"SuspiciousToArrayCall"}) @Override public <T> T[] toArray(T[] a) { removeStale(); Collection<E> elems = new LinkedList<>(); for (PhantomReferenceElement<E> ref : store) { E e = ref.get(); if (e != null) elems.add(e); } return elems.toArray(a); }
/** {@inheritDoc} */ @Override public int size() { removeStale(); return store.size(); }
/** {@inheritDoc} */ @Override public boolean isEmpty() { removeStale(); return store.isEmpty(); }
/** {@inheritDoc} */ @Override public boolean contains(@Nullable Object o) { removeStale(); if (!store.isEmpty() && o != null) { for (PhantomReferenceElement ref : store) { Object reft = ref.get(); if (reft != null && reft.equals(o)) return true; } } return false; }
/** {@inheritDoc} */ @Override public boolean remove(@Nullable Object o) { removeStale(); if (o != null) { for (Iterator<PhantomReferenceElement<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 retainAll(@Nullable Collection<?> c) { removeStale(); boolean res = false; if (!F.isEmpty(c)) { assert c != null; Iterator<PhantomReferenceElement<E>> iter = store.iterator(); while (iter.hasNext()) { if (!c.contains(iter.next().get())) { iter.remove(); res = true; } } } return res; }
/** {@inheritDoc} */ @SuppressWarnings({"SimplifiableIfStatement"}) @Override public boolean add(E e) { A.notNull(e, "e"); removeStale(); if (!contains(e)) return store.add(fact.apply(e)); return false; }
/** {@inheritDoc} */ @Override public int size() { removeStale(); return store.size(); }
/** {@inheritDoc} */ @Override public boolean isEmpty() { removeStale(); return store.isEmpty(); }
/** {@inheritDoc} */ @SuppressWarnings({"SuspiciousToArrayCall"}) @Override public <T> T[] toArray(T[] a) { removeStale(); Collection<E> elems = new LinkedList<>(); for (PhantomReferenceElement<E> ref : store) { E e = ref.get(); if (e != null) elems.add(e); } return elems.toArray(a); }
/** {@inheritDoc} */ @Override public boolean remove(@Nullable Object o) { removeStale(); if (o != null) { for (Iterator<PhantomReferenceElement<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 (PhantomReferenceElement ref : store) { Object reft = ref.get(); if (reft != null && reft.equals(o)) return true; } } return false; }
/** {@inheritDoc} */ @Override public boolean retainAll(@Nullable Collection<?> c) { removeStale(); boolean res = false; if (!F.isEmpty(c)) { assert c != null; Iterator<PhantomReferenceElement<E>> iter = store.iterator(); while (iter.hasNext()) { if (!c.contains(iter.next().get())) { iter.remove(); res = true; } } } return res; }
/** {@inheritDoc} */ @SuppressWarnings({"SimplifiableIfStatement"}) @Override public boolean add(E e) { A.notNull(e, "e"); removeStale(); if (!contains(e)) return store.add(fact.apply(e)); return false; }