A dictionary class built on top of InternalSet<KeyValuePair<K,V>>
.
- Template Parameters
-
Benchmarks show that this class is not as fast as the standard Dictionary<K,V> in most cases. however, it does have some advantages:
-
MMap allows null as a key (assuming it is based on the second version of Impl.InternalSet<T>).
-
MapOrMMap<K, V>.TryGet and MapOrMMap<K, V>.ContainsKey do not throw an incredibly annoying exception if you have the audacity to ask whether there is a null key in the collection.
-
This class supports fast cloning in O(1) time.
-
You can convert a mutable MMap<K,V> into an immutable Map<K,V>, a read-only dictionary that does not change when you change the original MMap.
-
This class has bonus methods defined by IDictionaryEx<K, V>.
-
The persistent map operations Union, Intersect, Except and Xor combine two dictionaries to create a new dictionary, without modifying either of the original dictionaries.
-
The methods With and Without create a new dictionary with a single item added or removed.
The documentation of InternalSet<T> describes how the data structure works.
|
| MMap (IEqualityComparer< K > comparer) |
| Creates an empty map with the specified key comparer. More...
|
|
| MMap (IEnumerable< KeyValuePair< K, V >> copy) |
| Creates a map with the specified elements. More...
|
|
| MMap (IEnumerable< KeyValuePair< K, V >> copy, IEqualityComparer< K > comparer) |
| Creates a map with the specified elements and key comparer. More...
|
|
void | Add (K key, V value) |
|
bool | Remove (K key) |
|
void | Add (KeyValuePair< K, V > item) |
|
void | Clear () |
|
bool | Remove (KeyValuePair< K, V > item) |
| Removes a pair from the map. More...
|
|
virtual MMap< K, V > | Clone () |
| Creates a copy of this map in O(1) time, by marking the current root node as frozen. More...
|
|
int | AddRange (MMap< K, V > data, bool replaceIfPresent=true) |
| Merges the contents of the specified map into this map. More...
|
|
int | AddRange (IEnumerable< KeyValuePair< K, V >> data, bool replaceIfPresent=true) |
| Merges the contents of the specified sequence into this map. More...
|
|
int | AddRange (IEnumerable< KeyValuePair< K, V >> data, DictEditMode mode) |
| Merges the contents of the specified sequence into this map. More...
|
|
bool | GetAndEdit (ref K key, ref V value, DictEditMode mode) |
| Combines a get and change operation into a single method call. You rarely need to call this method directly; the following extension methods are based on it: DictionaryExt.SwapIfPresent, DictionaryExt.AddIfNotPresent, DictionaryExt.AddOrGetExisting, DictionaryExt.ReplaceIfPresent, DictionaryExt.SetAndGet.
|
|
bool | AddOrFind (ref KeyValuePair< K, V > pair, bool replaceIfPresent) |
| For internal use. Adds a pair to the map if the key is not present, retrieves the existing key-value pair if the key is present, and optionally replaces the existing pair with a new pair. More...
|
|
Maybe< V > | GetAndRemove (K key) |
| Gets the value associated with the specified key, then removes the pair with that key from the dictionary. More...
|
|
bool | GetAndRemove (ref KeyValuePair< K, V > pair) |
| Gets the pair associated with pair.Key , then removes the pair with that key from the dictionary. More...
|
|
MMap< K, V > | With (K key, V value, bool replaceIfPresent=true) |
|
MMap< K, V > | With (KeyValuePair< K, V > item) |
|
MMap< K, V > | Without (K key) |
|
MMap< K, V > | Union (MapOrMMap< K, V > other) |
|
MMap< K, V > | Union (MapOrMMap< K, V > other, bool replaceWithValuesFromOther) |
|
MMap< K, V > | Intersect (MapOrMMap< K, V > other) |
|
MMap< K, V > | Except (MapOrMMap< K, V > other) |
|
MMap< K, V > | Xor (MapOrMMap< K, V > other) |
|
Map< K, V > | AsImmutable () |
|
bool | ContainsKey (K key) |
|
bool | TryGetValue (K key, out V value) |
|
bool | Contains (KeyValuePair< K, V > item) |
|
void | CopyTo (KeyValuePair< K, V >[] array, int arrayIndex) |
|
InternalSet< KeyValuePair< K, V > >.Enumerator | GetEnumerator () |
|
V | TryGetValue (K key, V defaultValue) |
| Synonym for this[key, defaultValue]. More...
|
|
virtual long | CountMemory (int sizeOfPair) |
| Measures the total size of all objects allocated to this collection, in bytes, including the size of this object itself; see InternalSet<T>.CountMemory. More...
|
|
V | TryGet (K key, out bool fail) |
| Gets the item for the specified key or index, and does not throw an exception on failure. More...
|
|
new bool | ContainsKey (K key) |
|
new bool | TryGetValue (K key, out V value) |
|
void | Add (K key, V value) |
|
bool | Remove (K key) |
|
void | Clear () |
|