Package io.deephaven.util.datastructures
Interface WeakReferenceManager<T>
- All Known Implementing Classes:
ArrayWeakReferenceManager,LinkedWeakReferenceManager
public interface WeakReferenceManager<T>
A helper for managing a list of weakly-reachable items. Implementations hide the internal management of cleared
references and provide for iteration over the valid (still reachable) items.
-
Method Summary
Modifier and TypeMethodDescriptionvoidAdditemto this WeakReferenceManager.voidclear()Clear all items from this WeakReferenceManager.default voidforEachValidReference(@NotNull Consumer<T> consumer) Invokeconsumer.accept(item)for each item previously added to this WeakReferenceManager whose reference has not been cleared (i.e.voidforEachValidReference(@NotNull Consumer<T> consumer, boolean parallel) Invokeconsumer.accept(item)for each item previously added to this WeakReferenceManager whose reference has not been cleared (i.e.Retrieve the first valid item for whichtest.test(item)returnstrue.booleanisEmpty()Check whether this WeakReferenceManager is empty.voidRemoveitemfrom this WeakReferenceManager, along with any cleared references.voidremoveAll(@NotNull Collection<T> items) Remove all items initemsfrom this WeakReferenceManager, along with any cleared references.
-
Method Details
-
add
Additemto this WeakReferenceManager.- Parameters:
item- The item to add
-
remove
Removeitemfrom this WeakReferenceManager, along with any cleared references. Comparison is strictly by reference equality, soitemmust be the same object as one previouslyadded.- Parameters:
item- The item to remove
-
removeAll
Remove all items initemsfrom this WeakReferenceManager, along with any cleared references. Comparison is strictly by reference equality.- Parameters:
items- The items to remove
-
forEachValidReference
Invokeconsumer.accept(item)for each item previously added to this WeakReferenceManager whose reference has not been cleared (i.e. because it was garbage-collected). Removes cleared references as a side effect. This overload is the same asforEachValidReference(consumer, false); that is, it does not parallelize.- Parameters:
consumer- The consumer to call for each valid item
-
forEachValidReference
Invokeconsumer.accept(item)for each item previously added to this WeakReferenceManager whose reference has not been cleared (i.e. because it was garbage-collected). Removes cleared references as a side effect.- Parameters:
consumer- The consumer to call for each valid itemparallel- Whether to attempt to invokeconsumerin parallel if the implementation supports this
-
getFirst
Retrieve the first valid item for whichtest.test(item)returnstrue. Any cleared references encountered are removed as a side effect.- Parameters:
test- The test to decide if a valid item should be returned- Returns:
- The first valid item that passed
test, ornullif no such item existed
-
isEmpty
boolean isEmpty()Check whether this WeakReferenceManager is empty. Does not check for cleared references, and so atruereturn does not guarantee that items will be encountered by subsequent methods.- Returns:
- Whether this WeakReferenceManager is empty
-
clear
void clear()Clear all items from this WeakReferenceManager.
-