CanonicalizedMap<C, K, V> class

A map whose keys are converted to canonical values of type C.

This is useful for using case-insensitive String keys, for example. It's more efficient than a LinkedHashMap with a custom equality operator because it only canonicalizes each key once, rather than doing so for each comparison.

Implemented types


CanonicalizedMap(C canonicalize(K key), {bool isValidKey(K key)?})
Creates an empty canonicalized map.
CanonicalizedMap.from(Map<K, V> other, C canonicalize(K key), {bool isValidKey(K key)?})
Creates a canonicalized map that is initialized with the key/value pairs of other.


entries Iterable<MapEntry<K, V>>
The map entries of this.
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 setteroverride
isNotEmpty bool
Whether there is at least one key/value pair in the map.
no setteroverride
keys Iterable<K>
The keys of this.
no setteroverride
length int
The number of key/value pairs in the map.
no setteroverride
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
values Iterable<V>
The values of this.
no setteroverride


addAll(Map<K, V> other) → void
Adds all key/value pairs of other to this map.
addEntries(Iterable<MapEntry<K, V>> entries) → void
Adds all key/value pairs of newEntries to this map.
cast<K2, V2>() Map<K2, V2>
Provides a view of this map as having RK keys and RV instances, if necessary.
clear() → void
Removes all entries from the map.
containsKey(Object? key) bool
Whether this map contains the given key.
containsValue(Object? value) bool
Whether this map contains the given value.
copy() CanonicalizedMap<C, K, V>
Copies this CanonicalizedMap instance without recalculating the canonical values of the keys.
forEach(void f(K, V)) → void
Applies action to each key/value pair of the map.
map<K2, V2>(MapEntry<K2, V2> transform(K, V)) Map<K2, V2>
Returns a new map where all entries of this map are transformed by the given convert function.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
putIfAbsent(K key, V ifAbsent()) → V
Look up the value of key, or add a new entry if it isn't there.
remove(Object? key) → V?
Removes key and its associated value, if present, from the map.
removeWhere(bool test(K key, V value)) → void
Removes all entries of this map that satisfy the given test.
retype<K2, V2>() Map<K2, V2>
toMap() Map<K, V>
Creates a Map<K,V> (with the original key values). See toMapOfCanonicalKeys.
toMapOfCanonicalKeys() Map<C, V>
Creates a Map<C,V> (with the canonicalized keys). See toMap.
toString() String
A string representation of this object.
update(K key, V update(V), {V ifAbsent()?}) → V
Updates the value for the provided key.
updateAll(V update(K key, V value)) → void
Updates all values.


operator ==(Object other) bool
The equality operator.
operator [](Object? key) → V?
The value for the given key, or null if key is not in the map.
operator []=(K key, V value) → void
Associates the key with the given value.