DualMap<K extends Object, V extends Object> class

A bidirectional map between non-nullable K and V.

Each key maps to exactly one value and each value maps back to exactly one key. Internally two maps are maintained:

  • _map: K → V
  • _map2: V → K

This allows O(1) lookup in both directions.

⚠️ It is the caller’s responsibility to avoid inserting the same value for different keys. If a value is reused, the reverse mapping will be overwritten and the structure becomes inconsistent.

Inheritance

Constructors

DualMap()

Properties

entries Iterable<MapEntry<K, V>>
Iterable view of the forward entries.
no setteroverride
hashCode int
The hash code for this object.
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>
Iterable view of the keys (K → V direction).
no setteroverride
length int
The number of key/value pairs in the map.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
values Iterable<V>
Iterable view of the values.
no setteroverride

Methods

addAll(Map<K, V> other) → void
Adds all key/value pairs of other to this map.
inherited
addEntries(Iterable<MapEntry<K, V>> newEntries) → void
Adds all key/value pairs of newEntries to this map.
inherited
cast<RK, RV>() Map<RK, RV>
Provides a view of this map as having RK keys and RV instances, if necessary.
inherited
clear() → void
Removes all mappings from both directions.
override
containsKey(Object? key) bool
Whether this map contains the given key.
inherited
containsValue(Object? value) bool
Whether this map contains the given value.
inherited
forEach(void action(K key, V value)) → void
Applies action to each key/value pair of the map.
inherited
get(Object? key) → V?
Returns the value associated with key, or null if absent.
getKeyFromValue(V value) → K?
Returns the key associated with value, or null if absent.
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 convert function.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
put(K key, V value) → void
Associates value with key.
putIfAbsent(K key, V ifAbsent()) → V
Look up the value of key, or add a new entry if it isn't there.
override
putValueIfAbsent(K key, V value) bool
Inserts value only if key is not already present.
remove(Object? key) → V?
Removes the mapping for key and its reverse mapping.
override
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, or null if key is not in the map.
override
operator []=(K key, V value) → void
Associates the key with the given value.
override