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 TypeMethodDescriptionvoid
Additem
to this WeakReferenceManager.void
clear()
Clear all items from this WeakReferenceManager.default void
forEachValidReference
(@NotNull Consumer<T> consumer) Invokeconsumer.accept(item)
for each item previously added to this WeakReferenceManager whose reference has not been cleared (i.e.void
forEachValidReference
(@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
.boolean
isEmpty()
Check whether this WeakReferenceManager is empty.void
Removeitem
from this WeakReferenceManager, along with any cleared references.void
removeAll
(@NotNull Collection<T> items) Remove all items initems
from this WeakReferenceManager, along with any cleared references.
-
Method Details
-
add
Additem
to this WeakReferenceManager.- Parameters:
item
- The item to add
-
remove
Removeitem
from this WeakReferenceManager, along with any cleared references. Comparison is strictly by reference equality, soitem
must be the same object as one previouslyadded
.- Parameters:
item
- The item to remove
-
removeAll
Remove all items initems
from 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 invokeconsumer
in 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
, ornull
if no such item existed
-
isEmpty
boolean isEmpty()Check whether this WeakReferenceManager is empty. Does not check for cleared references, and so atrue
return 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.
-