interface SortedMap.NonEmpty<K,V>
A non-empty type-invariant immutable Map of key type K, and value type V. In the Map, each key has exactly one value, and the Map cannot contain duplicate keys. See the Map documentation and the SortedMap API documentation
Extends: Streamable.NonEmpty<T>
, RMapBase.NonEmpty<K,V,Tp>
, SortedMap<K,V>
Implemented by: SortedMapNode<K,V>
Type parameters
Name | Description |
---|---|
K | the key type |
V | the value type |
- The
SortedMap
keeps the inserted keys in sorted order according to the context'scomp
instance.
const m1 = SortedMap.empty<number, string>()
const m2 = SortedMap.of([1, 'a'], [2, 'b'])
Properties
context
Returns the context
associated to this collection instance.
context
context
associated to this collection instance.isEmpty
Returns false since this collection is known to be non-empty.
isEmpty
size
Returns the number of entries
size
Methods
[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
.addEntries
Returns the collection with the entries from the given StreamSource
entries
added.
addEntries
StreamSource
entries
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 tuples with a key and value |
HashMap.of([1, 'a']).addEntries([[2, 'b']]).toArray() // => [[1, 'a'], [2, 'b']]
Overrides
addEntry
Returns the collection with given entry
added.
addEntry
entry
added.Definition
addEntry(entry: readonly [K, V]):
WithKeyValue
<Tp, K, V>['nonEmpty'];
Parameters
Name | Type | Description |
---|---|---|
entry | readonly [K, V] | a tuple containing a key and value |
HashMap.of([1, 'a']).addEntry([2, 'b']).toArray() // => [[1, 'a'], [2, 'b']]
HashMap.of([1, 'a']).addEntry([1, 'b']).toArray() // => [[1, 'b']]
Overrides
asNormal
Returns this collection typed as a 'possibly empty' collection.
asNormal
assumeNonEmpty
Returns a self reference since this collection is known to be non-empty.
assumeNonEmpty
drop
Returns a SortedMap containing all but the the first amount
of elements of this SortedMap.
drop
amount
of elements of this SortedMap.Definition
drop(amount: number):
SortedMap
<K, V>;
Parameters
Name | Type | Description |
---|---|---|
amount | number | the amount of elements to drop |
a negative amount
drops the last elements instead of the first, e.g. -2 is the last 2 elements
const m = SortedMap.of(['b', 2], ['d', 4], ['a', 1], ['c', 3]).asNormal();
console.log(m.drop(2).toArray())
// => [['c', ], ['d', 4]]
console.log(m.drop(-2).toArray())
// => [['a', 1], ['b', 2]]
Overrides
filter
Returns a collection containing only those entries that satisfy given pred
predicate.
filter
pred
predicate.Definition
filter(pred: (entry: readonly [K, V], index: number, halt: () => void) => boolean, options?: {
negate?: boolean;
}):
WithKeyValue
<Tp, K, V>['normal'];
Parameters
Name | Type | Description |
---|---|---|
pred | (entry: readonly [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 elements are passed |
options | { negate?: boolean; } | (optional) an object containing the following properties: - negate: (default: false) when true will negate the predicate |
HashMap.of([1, 'a'], [2, 'b'], [3, 'c']).filter(entry => entry[0] === 2 || entry[1] === 'c').toArray()
// => [[2, 'b'], [3, 'c']]
Overrides
forEach
Performs given function f
for each entry of the collection, using given state
as initial traversal state.
forEach
f
for each entry of the collection, using given state
as initial traversal state.Definition
forEach(f: (entry: readonly [K, V], index: number, halt: () => void) => void, options?: {
state?:
TraverseState
;
}): void;
Parameters
Name | Type | Description |
---|---|---|
f | (entry: readonly [K, V], index: number, halt: () => void) => void | the function to perform for each entry, 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 ; } | (optional) an object containing the following properties: - state:: (optional) the traversal state |
HashMap.of([1, 'a'], [2, 'b'], [3, 'c']).forEach((entry, i, halt) => {
console.log([entry[1], entry[0]]);
if (i >= 1) halt();
})
// => logs ['a', 1] ['b', 2]
O(N)
Overrides
get
Returns the value associated with the given key
, or given otherwise
value if the key is not in the collection.
get
key
, or given otherwise
value if the key is not in the collection.Definitions
get<UK = K>(key:
RelatedTo
<K, UK>): V
|
undefined;
get<UK, O>(key:
RelatedTo
<K, UK>, otherwise:
OptLazy
<O>): V
|
O;
Type parameters
Name | Default | Description |
---|---|---|
UK | K |
Parameters
Name | Type | Description |
---|---|---|
key | RelatedTo <K, UK> | the key to look for |
const m = HashMap.of([1, 'a'], [2, 'b'])
m.get(2) // => 'b'
m.get(3) // => undefined
m.get(2, 'none') // => 'b'
m.get(3, 'none') // => 'none'
Overrides
getAtIndex
Returns the entry with its key at the given index of the key sort order of the SortedMap, or a fallback value (default: undefined) if the index is out of bounds.
getAtIndex
Definitions
getAtIndex(index: number): readonly [K, V]
|
undefined;
getAtIndex<O>(index: number, otherwise:
OptLazy
<O>): readonly [K, V]
|
O;
Parameters
Name | Type | Description |
---|---|---|
index | number | the index in the key sort order |
negative index values will retrieve the values from the end of the sort order, e.g. -1 is the last value
const m = SortedMap.of(['b', 2], ['d', 4], ['a', 1], ['c', 3]).asNormal();
console.log(m.getAtIndex(1))
// => ['b', 2]
console.log(m.getAtIndex(-1))
// => ['d', 4]
console.log(m.getAtIndex(10))
// => undefined
console.log(m.getAtIndex(10, 'q'))
// => 'q'
Overrides
getKeyAtIndex
Returns the key at the given index of the key sort order of the SortedMap, or a fallback value (default: undefined) if the index is out of bounds.
getKeyAtIndex
Definitions
getKeyAtIndex(index: number): K
|
undefined;
getKeyAtIndex<O>(index: number, otherwise:
OptLazy
<O>): K
|
O;
Parameters
Name | Type | Description |
---|---|---|
index | number | the index in the key sort order |
negative index values will retrieve the values from the end of the sort order, e.g. -1 is the last value
const m = SortedMap.of(['b', 2], ['d', 4], ['a', 1], ['c', 3]).asNormal();
console.log(m.getKeyAtIndex(1))
// => 'b'
console.log(m.getKeyAtIndex(-1))
// => 'd'
console.log(m.getKeyAtIndex(10))
// => undefined
console.log(m.getKeyAtIndex(10, 'q'))
// => 'q'
Overrides
getValueAtIndex
Returns the value associated with the key at the given index of the key sort order of the SortedMap, or a fallback value (default: undefined) if the index is out of bounds.
getValueAtIndex
Definitions
getValueAtIndex(index: number): V
|
undefined;
getValueAtIndex<O>(index: number, otherwise:
OptLazy
<O>): V
|
O;
Parameters
Name | Type | Description |
---|---|---|
index | number | the index in the key sort order |
negative index values will retrieve the values from the end of the sort order, e.g. -1 is the last value
const m = SortedMap.of(['b', 2], ['d', 4], ['a', 1], ['c', 3]).asNormal();
console.log(m.getValueAtIndex(1))
// => 2
console.log(m.getValueAtIndex(-1))
// => 4
console.log(m.getValueAtIndex(10))
// => undefined
console.log(m.getValueAtIndex(10, 'q'))
// => 'q'
Overrides
hasKey
Returns true if the given key
is present in the collection.
hasKey
key
is present in the collection.mapValues
Returns a non-empty collection with the same keys, but where the given mapFun
function is applied to each entry value.
mapValues
mapFun
function is applied to each entry value.Definition
mapValues<V2>(mapFun: (value: V, key: K) => V2): (Tp &
KeyValue
<K, V2>)['nonEmpty'];
Type parameters
Name | Description |
---|---|
V2 |
Parameters
Name | Type | Description |
---|---|---|
mapFun | (value: V, key: K) => V2 | a function taking a value and a key , and returning a new value |
HashMap.of([1, 'a'], [2, 'abc']).mapValues(v => v.length).toArray()
// => [[1, 1], [2, 3]]
Overrides
max
Returns the entry with the maximum key of the SortedMap.
max
maxKey
Returns the maximum key of the SortedMap.
maxKey
maxValue
Returns the value associated with the maximum key of the SortedMap.
maxValue
min
Returns the entry with the minimum key of the SortedMap.
min
minKey
Returns the minimum key of the SortedMap.
minKey
minValue
Returns the value associated with the minimum key of the SortedMap.
minValue
modifyAt
Returns the collection with the given atKey
key modified according to given options
.
modifyAt
atKey
key modified according to given options
.Definition
modifyAt(atKey: K, options: {
ifNew?:
OptLazyOr
<V, Token>;
ifExists?: (<V2 extends V = V>(currentEntry: V & V2, remove: Token) => V
|
Token)
|
V;
}):
WithKeyValue
<Tp, K, V>['normal'];
Parameters
Name | Type | Description |
---|---|---|
atKey | K | the key at which to modify the collection |
options | { ifNew?: OptLazyOr <V, Token>; ifExists?: (<V2 extends V = V>(currentEntry: V & V2, remove: Token) => V | Token) | 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 a new entry. If a function returning the token argument is given, no new entry is created.- ifExists: (optional) if a value is associated with given atKey , this function is called with the given value to return a new value. As a second argument, a remove token is given. If the function returns this token, the current entry is removed. |
const m = HashMap.of([1, 'a'], [2, 'b'])
m.modifyAt(3, { ifNew: 'c' }).toArray()
// => [[1, 'a'], [2, 'b'], [3, 'c']]
m.modifyAt(3, { ifNew: (none) => 1 < 2 ? none : 'c' }).toArray()
// => [[1, 'a'], [2, 'b']]
m.modifyAt(2, { ifExists: () => 'c' }).toArray()
// => [[1, 'a'], [2, 'c']]
m.modifyAt(2, { ifExists: (v) => v + 'z' }).toArray()
// => [[1, 'a'], [2, 'bz']]
m.modifyAt(2, { ifExists: (v, remove) => v === 'a' ? v : remove }).toArray()
// => [[1, 'a']]
Overrides
nonEmpty
Returns true since this collection is known to be non-empty
nonEmpty
Definition
nonEmpty(): this is
WithKeyValue
<Tp, K, V>['nonEmpty'];
HashMap.of([1, 1], [2, 2]).nonEmpty() // => true
Overrides
removeKey
Returns the collection where the entry associated with given key
is removed if it was part of the collection.
removeKey
key
is removed if it was part of the collection.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 entry to remove |
const m = HashMap.of([1, 'a'], [2, 'b'])
m.removeKey(2).toArray() // => [[1, 'a']]
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 entry associated with given key
is removed, and the value that is associated with that key. If the key is not present, it will return undefined instead.
removeKeyAndGet
key
is removed, and the value that is 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'], V]
|
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 = HashMap.of([1, 'a'], [2, 'b'])
const result = m.removeKeyAndGet(2)
if (result !== undefined) console.log([result[0].toString(), result[1]]) // => logs [HashMap(1 => 'a'), 'b']
console.log(m.removeKeyAndGet(3)) // => logs undefined
Overrides
removeKeys
Returns the collection where the entries associated with each key in given keys
are removed if they were present.
removeKeys
keys
are removed if they were present.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 = HashMap.of([1, 'a'], [2, 'b'])
m.removeKeys([1, 3]).toArray() // => [[2, 'b']]
m.removeKeys([1, 3, 2]).toArray() // => []
m.removeKeys([3, 4, 5]) === m // => true
guarantees same object reference if none of the keys are present
Overrides
set
Returns the collection with the given key
associated to the given value
.
set
key
associated to the given value
.Definition
set(key: K, value: V):
WithKeyValue
<Tp, K, V>['nonEmpty'];
Parameters
Name | Type | Description |
---|---|---|
key | K | the entry key to add |
value | V | the entry value to add |
HashMap.of([1, 'a']).set(2, 'b').toArray() // => [[1, 'a'], [2, 'b']]
HashMap.of([1, 'a']).set(1, 'b').toArray() // => [[1, 'b']]
if the key is already associated, the previous value will be 'replaced'
Overrides
slice
Returns a SortedMap containing only those entries whose keys are within the given keyRange
.
slice
keyRange
.Definition
slice(keyRange: Range<K>):
SortedMap
<K, V>;
Parameters
Name | Type | Description |
---|---|---|
keyRange | Range<K> | a Range defining the keys to include |
const m = SortedMap.of(['b', 2], ['d', 4], ['a', 1], ['c', 3]).asNormal();
console.log(m.slice({ start: 'b', end: 'c' }).toArray())
// => [['b', 2], ['c', 3]]
Overrides
sliceIndex
Returns a SortedMap containing only those entries that are within the given range
index range of they key sort order.
sliceIndex
range
index range of they key sort order.Definition
sliceIndex(range: IndexRange):
SortedMap
<K, V>;
Parameters
Name | Type | Description |
---|---|---|
range | IndexRange | an IndexRange defining the sort order indices to include. |
const m = SortedMap.of(['b', 2], ['d', 4], ['a', 1], ['c', 3]).asNormal();
console.log(m.sliceIndex({ start: 1, amount: 2 }).toArray())
// => [['b', 2], ['c', 3]]
Overrides
stream
undocumented
stream
Definition
stream(options?: {
reversed?: boolean;
}):
Stream.NonEmpty
<readonly [K, V]>;
Parameters
Name | Type | Description |
---|---|---|
options | { reversed?: boolean; } |
Overrides
streamKeys
undocumented
streamKeys
Definition
streamKeys(options?: {
reversed?: boolean;
}):
Stream.NonEmpty
<K>;
Parameters
Name | Type | Description |
---|---|---|
options | { reversed?: boolean; } |
Overrides
streamRange
Returns a Stream of sorted entries of this collection within the given keyRange
.
streamRange
keyRange
.Definition
streamRange(keyRange: Range<K>, options?: {
reversed?: boolean;
}):
Stream
<readonly [K, V]>;
Parameters
Name | Type | Description |
---|---|---|
keyRange | Range<K> | the range of keys to include in the stream |
options | { reversed?: boolean; } | (optional) an object containing the following properties: - reversed: (default: false) when true reverses the stream element order |
const m = SortedMap.of(['b', 2], ['d', 4], ['a', 1], ['c', 3]);
console.log(m.streamRange({ start: 'b', end: 'c' }).toArray())
// => ['b', 'c']
Overrides
streamSliceIndex
Returns a Stream of sorted entries of this collection within the given range
index range.
streamSliceIndex
range
index range.Definition
streamSliceIndex(range: IndexRange, options?: {
reversed?: boolean;
}):
Stream
<readonly [K, V]>;
Parameters
Name | Type | Description |
---|---|---|
range | IndexRange | the range of keys to include in the stream |
options | { reversed?: boolean; } |
const m = SortedMap.of(['b', 2], ['d', 4], ['a', 1], ['c', 3]);
console.log(m.streamSliceIndex({ start: 1, amount: 2 }).toArray())
// => [['b', 2], ['c', 3]]
Overrides
streamValues
undocumented
streamValues
Definition
streamValues(options?: {
reversed?: boolean;
}):
Stream.NonEmpty
<V>;
Parameters
Name | Type | Description |
---|---|---|
options | { reversed?: boolean; } |
Overrides
take
undocumented
take
toArray
Returns a non-empty array containing all entries in this collection.
toArray
Definition
toArray():
ArrayNonEmpty
<readonly [K, V]>;
HashMap.of([1, 'a'], [2, 'b']).toArray() // => [[1, 'a'], [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.
toBuilder
Definition
toBuilder():
WithKeyValue
<Tp, K, V>['builder'];
const builder: HashMap.Builder<number, string> = HashMap.of([1, 'a'], [2, 'b']).toBuilder()
Overrides
toJSON
Returns a JSON representation of this collection.
toJSON
toString
Returns a string representation of this collection.
toString
updateAt
Returns the collection where the value associated with given key
is updated with the given update
value or update function.
updateAt
key
is updated with the given update
value or update function.Definition
updateAt<UK = K>(key:
RelatedTo
<K, UK>, update:
RMapBase.Update
<V>):
WithKeyValue
<Tp, K, V>['nonEmpty'];
Type parameters
Name | Default | Description |
---|---|---|
UK | K |
Parameters
Name | Type | Description |
---|---|---|
key | RelatedTo <K, UK> | the key of the entry to update |
update | RMapBase.Update <V> | a new value or function taking the current value and returning a new value |
const m = HashMap.of([1, 'a'], [2, 'b'])
m.updateAt(3, 'a').toArray()
// => [[1, 'a'], [2, 'b']]
m.updateAt(2, 'c').toArray()
// => [[1, 'a'], [2, 'c']]
m.updateAt(2, v => v + 'z')
// => [[1, 'a'], [2, 'cz]]