interface MultiMapBase.NonEmpty<K,V,Tp>
undocumented
Extends: Streamable.NonEmpty<T>, MultiMapBase<K,V,Tp>, VariantMultiMapBase.NonEmpty<K,V,Tp>
Implemented by: MultiMapNonEmpty<K,V,Tp,TpG>
Type parameters
| Name | Constraints | Default | Description |
|---|---|---|---|
| K | undocumented | ||
| V | undocumented | ||
| Tp | MultiMapBase.Types | MultiMapBase.Types | undocumented |
Properties
context
Returns the context associated to this collection instance.
contextcontext associated to this collection instance.isEmpty
Returns false since this collection is known to be non-empty
isEmptykeyMap
Returns the non-empty Map representation of this collection.
keyMapDefinition
readonly keyMap: WithKeyValue<Tp, K, V>['keyMapNonEmpty'];
const m = HashMultiMapHashValue.of([1, 1], [2, 2])
const map: HashMap.NonEmpty<number, HashSet.NonEmpty<number>> = m.keyMap
Overrides
keySize
Returns the number of keys in the collection.
keySizesize
Returns the number of unique key-value combinations in this collection.
sizeMethods
[Symbol.iterator]
Returns a FastIterator instance used to iterate over the values of this Iterable.
[Symbol.iterator]FastIterator instance used to iterate over the values of this Iterable.add
Returns the collection with the given value added to the given key values.
addvalue added to the given key values.Definition
add(key: K, value: V): WithKeyValue<Tp, K, V>['nonEmpty'];
Parameters
| Name | Type | Description |
|---|---|---|
key | K | the key for which to add a value |
value | V | the value to add to the key values |
HashMultiMapHashValue.of([1, 'a']).add(2, 'b').toArray() // => [[1, 'a'], [2, 'b']]
HashMultiMapHashValue.of([1, 'a']).add(1, 'b').toArray() // => [[1, 'a'], [1, 'b']]
Overrides
addEntries
Returns the collection with the given entries added.
addEntriesentries added.Definition
addEntries(entries: StreamSource<readonly [K, V]>): WithKeyValue<Tp, K, V>['nonEmpty'];
Parameters
| Name | Type | Description |
|---|---|---|
entries | StreamSource<readonly [K, V]> | a StreamSource containing entries to add |
HashMultiMapHashValue.of([1, 'a']).addEntries([[2, 'b'], [1, 'c']).toArray()
// => [[1, 'a'], [1, 'c'], [2, 'b']]
Overrides
asNormal
Returns this collection typed as a 'possibly empty' collection.
asNormalDefinition
asNormal(): WithKeyValue<Tp, K, V>['normal'];
HashMultiMapHashValue.of([1, 1], [2, 2]).asNormal(); // type: HashMultiMapHashValue<number, number>
Overrides
assumeNonEmpty
Returns a self reference since this collection is known to be non-empty.
assumeNonEmptyfilter
Returns a collection containing only those entries that satisfy given pred predicate.
filterpred predicate.Definition
filter(pred: (entry: [K, V], index: number, halt: () => void) => boolean, options?: {
negate?: boolean;
}): WithKeyValue<Tp, K, V>['normal'];
Parameters
| Name | Type | Description |
|---|---|---|
pred | (entry: [K, V], index: number, halt: () => void) => boolean | a predicate function receiving: - entry: the next entry- index: the entry index- halt: a function that, when called, ensures no next entries are passed |
options | {negate?: boolean;} | (optional) an object containing the following properties: - negate: (default: false) when true will negate the predicate |
HashMultiMapHashValue.of([1, 'a'], [2, 'b'], [1, 'c'])
.filter(entry => entry[0] === 2 || entry[1] === 'c')
.toArray()
// => [[2, 'b'], [1, 'c']]
Overrides
forEach
Performs given function f for each entry of the collection, using given state as initial traversal state.
forEachf for each entry of the collection, using given state as initial traversal state.Definition
forEach(f: (entry: [K, V], index: number, halt: () => void) => void, options?: {
state?: TraverseState;
}): void;
Parameters
| Name | Type | Description |
|---|---|---|
f | (entry: [K, V], index: number, halt: () => void) => void | the function to perform for each element, receiving: - entry: the next tuple of a key and value- index: the index of the element- halt: a function that, if called, ensures that no new elements are passed |
options | {state?: TraverseState;} |
HashMultiMapHashValue.of([1, 'a'], [2, 'b'], [1, 'c']).forEach((entry, i, halt) => {
console.log([entry[1], entry[0]]);
if (i >= 1) halt();
})
// => logs ['a', 1] ['c', 1] (or other order)
O(N)
Overrides
getValues
Returns the value collection associated to the given key.
getValueskey.Definition
getValues<UK = K>(key: RelatedTo<K, UK>): WithKeyValue<Tp, K, V>['keyMapValues'];
Type parameters
| Name | Default | Description |
|---|---|---|
| UK | K |
Parameters
| Name | Type | Description |
|---|---|---|
key | RelatedTo<K, UK> | the key to look for |
const m = HashMultiMapHashValue.of([1, 'a'], [2, 'b'])
m.getValues(1).toArray() // => ['a']
m.getValues(10).toArray() // => []
Overrides
hasEntry
Returns true if the given key has the given value as one of its values in the collection.
hasEntrykey has the given value as one of its values in the collection.Definition
hasEntry<UK = K>(key: RelatedTo<K, UK>, value: V): boolean;
Type parameters
| Name | Default | Description |
|---|---|---|
| UK | K |
Parameters
| Name | Type | Description |
|---|---|---|
key | RelatedTo<K, UK> | the key to look for |
value | V | the value to look for |
const m = HashMultiMapHashValue.of([1, 'a'], [2, 'b'])
m.hasEntry(1, 'a') // => true
m.hasEntry(1, 'b') // => false
Overrides
hasKey
Returns true if the given key is present in the collection.
hasKeykey is present in the collection.modifyAt
Returns the collection with the given atKey key modified according to given options.
modifyAtatKey key modified according to given options.Definition
modifyAt(atKey: K, options: {
ifNew?: OptLazy<StreamSource<V>>;
ifExists?: ((currentValues: WithKeyValue<Tp, K, V>['keyMapValuesNonEmpty']) => StreamSource<V>) | StreamSource<V>;
}): WithKeyValue<Tp, K, V>['normal'];
Parameters
| Name | Type | Description |
|---|---|---|
atKey | K | the key at which to modify the collection |
options | {ifNew?: OptLazy<StreamSource<V>>;ifExists?: ((currentValues: WithKeyValue<Tp, K, V>['keyMapValuesNonEmpty']) => StreamSource<V>) | StreamSource<V>;} | an object containing the following information: - ifNew: (optional) if the given atKey is not present in the collection, this value or function will be used to generate new values. If a function returning the token argument is given, no new entry is created.- ifExists: (optional) if given atKey exists in the collection, this function is called with the current values to return new values. As a second argument, a remove token is given. If the function returns this token, the current entry is removed. |
const m = HashMultiMapHashValue.of([1, 'a'], [2, 'b'])
m.modifyAt(3, { ifNew: ['c', 'd'] }).toArray()
// => [[1, 'a'], [2, 'b'], [3, 'c'], [3, 'd']]
m.modifyAt(3, { ifNew: () => 1 < 2 ? [] : ['c'] }).toArray()
// => [[1, 'a'], [2, 'b']]
m.modifyAt(2, { ifExists: () => ['c'] }).toArray()
// => [[1, 'a'], [2, 'c']]
m.modifyAt(2, { ifExists: (v) => v.add('d') }).toArray()
// => [[1, 'a'], [2, 'c'], [2, 'd']]
m.modifyAt(2, { ifExists: (v) => v.has('a') ? v : [] }).toArray()
// => [[1, 'a']]
Overrides
nonEmpty
Returns true since this collection is known to be non-empty
nonEmptyDefinition
nonEmpty(): this is WithKeyValue<Tp, K, V>['nonEmpty'];
HashMultiMapHashValue.of([1, 1], [2, 2]).nonEmpty() // => true
Overrides
removeEntries
Returns the collection where given entries are removed.
removeEntriesentries are removed.Definition
removeEntries<UK = K, UV = V>(entries: StreamSource<[RelatedTo<K, UK>, RelatedTo<V, UV>]>): WithKeyValue<Tp, K, V>['normal'];
Type parameters
| Name | Default | Description |
|---|---|---|
| UK | K | |
| UV | V |
Parameters
| Name | Type | Description |
|---|---|---|
entries | StreamSource<[RelatedTo<K, UK>, RelatedTo<V, UV>]> | a StreamSource containing key-value entries to remove |
const m = HashMultiMapHashValue.of([1, 'a'], [2, 'b'], [1, 'c'])
m.removeEntries([[2, 'b'], [1, 'd']]).toArray() // => [[1, 'a'], [1, 'c']]
m.removeEntries([2, 'q']).toArray() // => [[1, 'a'], [2, 'b'], [1, 'c']]
m.removeEntries(3) === m // true
guarantees same object reference if the key is not present
Overrides
removeEntry
Returns the collection where given value if removed from the values associated with given key.
removeEntryvalue if removed from the values associated with given key.Definition
removeEntry<UK = K, UV = V>(key: RelatedTo<K, UK>, value: RelatedTo<V, UV>): WithKeyValue<Tp, K, V>['normal'];
Type parameters
| Name | Default | Description |
|---|---|---|
| UK | K | |
| UV | V |
Parameters
| Name | Type | Description |
|---|---|---|
key | RelatedTo<K, UK> | the key of the entry to remove |
value | RelatedTo<V, UV> | the value of the entry to remove |
const m = HashMultiMapHashValue.of([1, 'a'], [2, 'b'], [1, 'c'])
m.removeEntry(2, 'b').toArray() // => [[1, 'a'], [1, 'c']]
m.removeEntry(2, 'q').toArray() // => [[1, 'a'], [2, 'b'], [1, 'c']]
m.removeEntry(3, 'a') === m // true
guarantees same object reference if the key is not present
Overrides
removeKey
Returns the collection where the values associated with given key are removed.
removeKeykey are removed.Definition
removeKey<UK = K>(key: RelatedTo<K, UK>): WithKeyValue<Tp, K, V>['normal'];
Type parameters
| Name | Default | Description |
|---|---|---|
| UK | K |
Parameters
| Name | Type | Description |
|---|---|---|
key | RelatedTo<K, UK> | the key of the entries to remove |
const m = HashMultiMapHashValue.of([1, 'a'], [2, 'b'], [1, 'c'])
m.removeKey(2).toArray() // => [[1, 'a'], [1, 'c']]
m.removeKey(3) === m // true
guarantees same object reference if the key is not present
Overrides
removeKeyAndGet
Returns a tuple containing the collection of which the given key is removed, and the values that are associated with that key. If the key is not present, it will return undefined instead.
removeKeyAndGetkey is removed, and the values that are associated with that key. If the key is not present, it will return undefined instead.Definition
removeKeyAndGet<UK = K>(key: RelatedTo<K, UK>): [
WithKeyValue<Tp, K, V>['normal'],
WithKeyValue<Tp, K, V>['keyMapValuesNonEmpty']
] | undefined;
Type parameters
| Name | Default | Description |
|---|---|---|
| UK | K |
Parameters
| Name | Type | Description |
|---|---|---|
key | RelatedTo<K, UK> | the key of the entry to remove |
const m = HashMultiMapHashValue.of([1, 'a'], [2, 'b'])
const result = m.removeKeyAndGet(2)
if (result !== undefined) console.log([result[0].toString(), result[1]]) // => logs [HashMultiMapHashValue(1 => 'a'), HashSet('b')]
console.log(m.removeKeyAndGet(3)) // => logs undefined
Overrides
removeKeys
Returns the collection where the values associated with given keys are removed.
removeKeyskeys are removed.Definition
removeKeys<UK = K>(keys: StreamSource<RelatedTo<K, UK>>): WithKeyValue<Tp, K, V>['normal'];
Type parameters
| Name | Default | Description |
|---|---|---|
| UK | K |
Parameters
| Name | Type | Description |
|---|---|---|
keys | StreamSource<RelatedTo<K, UK>> | a StreamSource of keys to remove |
const m = HashMultiMapHashValue.of([1, 'a'], [2, 'b'], [1, 'c'])
m.removeKeys([2, 10]).toArray() // => [[1, 'a'], [1, 'c']]
m.removeKeys([10, 11]) === m // true
guarantees same object reference if the key is not present
Overrides
setValues
Returns the collection where given key has the given values associated with it.
setValueskey has the given values associated with it.Definitions
setValues(key: K, values: StreamSource.NonEmpty<V>): WithKeyValue<Tp, K, V>['nonEmpty'];
setValues(key: K, values: StreamSource<V>): WithKeyValue<Tp, K, V>['normal'];
Parameters
| Name | Type | Description |
|---|---|---|
key | K | the key for which to set the values |
values | StreamSource.NonEmpty<V> | the values to set for the key |
HashMultiMapHashValue.of([1, 'a'], [2, 'b']).setValues(1, ['d', 'e']).toArray()
// => [[1, 'd'], [1, 'e'], [2, 'b']]
Overrides
stream
Returns a non-empty Stream containing all entries of this collection as tuples of key and value.
streamDefinition
stream(): Stream.NonEmpty<[K, V]>;
HashMultiMapHashValue.of([1, 1], [2, 2]).stream().toArray() // => [[1, 1], [2, 2]]
Overrides
NonEmpty.stream, NonEmpty.stream, VariantMultiMapBase.stream
streamKeys
Returns a non-empty Stream containing all keys of this collection.
streamKeysDefinition
streamKeys(): Stream.NonEmpty<K>;
HashMultiMapHashValue.of([[1, 'a'], [2, 'b']]).streamKeys().toArray() // => [1, 2]
Overrides
streamValues
Returns a non-empty Stream containing all values of this collection.
streamValuesDefinition
streamValues(): Stream.NonEmpty<V>;
HashMultiMapHashValue.of([[1, 'a'], [2, 'b']]).streamValues().toArray() // => ['a', 'b']
Overrides
toArray
Returns a non-empty array containing all entries in this collection.
toArrayDefinition
toArray(): ArrayNonEmpty<[K, V]>;
HashMultiMapHashValue.of([1, 'a'], [2, 'b'], [1, 'c']).toArray() // => [[1, 'a'], [1, 'c'], [2, 'b']]
O(log(N)) @note it is safe to mutate the returned array, however, the array elements are not copied, thus should be treated as read-only
Overrides
toBuilder
Returns a builder object containing the entries of this collection.
toBuilderDefinition
toBuilder(): WithKeyValue<Tp, K, V>['builder'];
const builder: HashMultiMapHashValue.Builder<number, string>
= HashMultiMapHashValue.of([1, 'a'], [2, 'b'], [2, 'c']).toBuilder()
Overrides
toJSON
Returns a JSON representation of this collection.
toJSON