DualWeakMap<K extends Object, V extends Object> class
A Map with both keys and values weakly referenced.
Unlike Expando, this is a complete Map implementation, supporting the full Map API, including iteration, removal, and entry views.
Entries are automatically removed when either the key or the value is garbage-collected, keeping the map consistent without preventing GC.
This map also provides a lightweight swapped view via swapped, allowing values to be accessed as keys and keys as values without copying data.
- Inheritance
-
- Object
- MapBase<
K, V> - WeakKeyMap<
K, V> - DualWeakMap
Constructors
-
DualWeakMap({bool autoPurge = true, int autoPurgeThreshold = defaultAutoPurgeThreshold, void onPurgedValues(List<
V> purgedValues)?})
Properties
- autoPurgeThreshold → int
-
Number of operations tolerated before auto-purge is triggered.
no setterinherited
-
entries
→ Iterable<
MapEntry< K, V> > -
The map entries of this Map.
no setterinherited
-
entriesSwapped
→ Iterable<
MapEntry< V, K> > -
Iterable of entries with key and value swapped.
See DualWeakMap.swapped SwappedDualWeakMap
no setterinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- isAutoPurgeEnabled → bool
-
Whether auto-purge is enabled.
no setterinherited
- isEmpty → bool
-
Whether there is no key/value pair in the map.
no setterinherited
- isNotEmpty → bool
-
Whether there is at least one key/value pair in the map.
no setterinherited
-
keys
→ Iterable<
K> -
The keys of this Map.
no setterinherited
- length → int
-
The number of key/value pairs in the map.
no setterinherited
-
onPurgedValues
→ void Function(List<
V> purgedValues)? -
Optional callback invoked with values removed during purge.
finalinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
swapped
→ SwappedDualWeakMap<
V, K> -
Returns a view with keys and values swapped.
no setter
-
values
→ Iterable<
V> -
The values of this Map.
no setterinherited
Methods
-
addAll(
Map< K, V> other) → void -
Adds all key/value pairs of
otherto this map.inherited -
addEntries(
Iterable< MapEntry< newEntries) → voidK, V> > -
Adds all key/value pairs of
newEntriesto this map.inherited -
autoPurge(
) → bool -
Runs purge automatically if the threshold is exceeded.
inherited
-
cast<
RK, RV> () → Map< RK, RV> -
Provides a view of this map as having
RKkeys andRVinstances, if necessary.inherited -
clear(
) → void -
Removes all entries from the map.
override
-
containsKey(
Object? key) → bool -
Whether this map contains the given
key.inherited -
containsKeyNoPurge(
Object? key) → bool -
Returns
trueifkeyhas an associated value.inherited -
containsValue(
Object? value) → bool -
Whether this map contains the given
value.override -
containsValueNoPurge(
Object? value) → bool -
Returns
trueif any entry currently maps tovalue.override -
forEach(
void action(K key, V value)) → void -
Applies
actionto each key/value pair of the map.inherited -
get(
Object? key) → V? -
Returns the value associated with
key, ornullif absent or collected.inherited -
getEntry(
Object? key) → MapEntry< K, V> ? -
Returns the MapEntry for
key, ornullif not found or invalid.inherited -
getKeyFromValue(
Object? value) → K? - Returns the key associated with a given value, if still alive.
-
getNoPurge(
Object? key) → V? -
Returns the value associated with
key, ornullif absent or collected. Same as get, but does NOT purge entries with collected key or value.inherited -
isAutoPurgeRequired(
) → bool -
Returns
trueif auto-purge should be triggered.inherited -
iterate(
void action(K, V)) → void -
Iterates over live entries only.
inherited
-
map<
K2, V2> (MapEntry< K2, V2> transform(K key, V value)) → Map<K2, V2> -
Returns a new map where all entries of this map are transformed by
the given
convertfunction.inherited -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
purge(
) → WeakKeyMap< K, V> -
Removes all entries whose keys were garbage-collected.
inherited
-
put(
K key, V value) → void -
Inserts or replaces a key-value pair.
inherited
-
putIfAbsent(
K key, V ifAbsent()) → V -
Look up the value of
key, or add a new entry if it isn't there.inherited -
putValueIfAbsent(
K key, V value) → bool -
Inserts
valueforkeyonly if no entry forkeyalready exists.inherited -
remove(
Object? key) → V? -
Removes
keyand its associated value, if present, from the map.inherited -
removeWhere(
bool test(K key, V value)) → void -
Removes all entries of this map that satisfy the given
test.inherited -
toString(
) → String -
A string representation of this object.
inherited
-
update(
K key, V update(V value), {V ifAbsent()?}) → V -
Updates the value for the provided
key.inherited -
updateAll(
V update(K key, V value)) → void -
Updates all values.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
-
operator [](
Object? key) → V? -
The value for the given
key, ornullifkeyis not in the map.inherited -
operator []=(
K key, V value) → void -
Associates the
keywith the givenvalue.inherited