Skip to content

MultiMap

Defined in: packages/data/src/multimap/multi-map.ts:23

A key associated with many values, backed by a Map of arrays.

This is a list multimap: a key may hold the same value more than once, and the values of a key keep their insertion order. That is the more primitive of the two shapes — a set-multimap can be built over this one, whereas recovering duplicates from a set-multimap is impossible. add never deduplicates; use hasEntry first if a key must hold a value only once.

count() is the total number of (key, value) entries across every key: a key holding three values contributes three. keyCount() is the number of distinct keys.

Time complexity: O(1) for add, has, countFor and keyCount; O(1) for delete of a whole key; O(k) for hasEntry/deleteEntry in the number of values held under that key. Keys and values are compared by SameValueZero.

K

The key type.

V

The value type.

new MultiMap<K, V>(iterable?): MultiMap<K, V>

Defined in: packages/data/src/multimap/multi-map.ts:29

Iterable<readonly [K, V], any, any>

MultiMap<K, V>

[iterator](): Iterator<readonly [K, V]>

Defined in: packages/data/src/multimap/multi-map.ts:37

Iterator<readonly [K, V]>

IMultimap.[iterator]


add(key, value): void

Defined in: packages/data/src/multimap/multi-map.ts:65

O(1). Appends even when key already holds value.

K

V

void

IMultimap.add


addAll(key, values): void

Defined in: packages/data/src/multimap/multi-map.ts:78

O(m) in the number of values.

K

Iterable<V>

void

IMultimap.addAll


clear(): void

Defined in: packages/data/src/multimap/multi-map.ts:46

Removes all elements from the collection.

void

IMultimap.clear


count(): number

Defined in: packages/data/src/multimap/multi-map.ts:42

The total number of (key, value) entries, not the number of keys.

number

IMultimap.count


countFor(key): number

Defined in: packages/data/src/multimap/multi-map.ts:156

O(1).

K

number

IMultimap.countFor


delete(key): number

Defined in: packages/data/src/multimap/multi-map.ts:113

Removes key and every value under it. O(1).

K

number

How many entries were removed.

IMultimap.delete


deleteEntry(key, value): boolean

Defined in: packages/data/src/multimap/multi-map.ts:132

Removes one occurrence of value under key — the first, since values keep their insertion order. O(k).

K

V

boolean

true if an entry was removed.

IMultimap.deleteEntry


entries(): IterableIterator<readonly [K, V]>

Defined in: packages/data/src/multimap/multi-map.ts:171

Every (key, value) pair, grouped by key.

IterableIterator<readonly [K, V]>

IMultimap.entries


get(key): IterableIterator<V>

Defined in: packages/data/src/multimap/multi-map.ts:52

The values held under key, in insertion order. Empty when absent.

K

IterableIterator<V>

IMultimap.get


has(key): boolean

Defined in: packages/data/src/multimap/multi-map.ts:99

O(1). Whether key holds at least one value.

K

boolean

IMultimap.has


hasEntry(key, value): boolean

Defined in: packages/data/src/multimap/multi-map.ts:104

O(k) in the number of values held under key.

K

V

boolean

IMultimap.hasEntry


keyCount(): number

Defined in: packages/data/src/multimap/multi-map.ts:161

The number of distinct keys. O(1).

number

IMultimap.keyCount


keys(): IterableIterator<K>

Defined in: packages/data/src/multimap/multi-map.ts:166

Each distinct key once, in first-insertion order.

IterableIterator<K>

IMultimap.keys