interface MultiSetBase.NonEmpty<T,Tp>
undocumented
Extends: Streamable.NonEmpty<T>, MultiSetBase<T,Tp>, VariantMultiSetBase.NonEmpty<T,Tp>
Implemented by: MultiSetNonEmpty<T,Tp,TpG>
Type parameters
| Name | Constraints | Default | Description |
|---|---|---|---|
| T | undocumented | ||
| Tp | MultiSetBase.Types | MultiSetBase.Types | undocumented |
Properties
context
Returns the context associated to this collection instance.
contextcontext associated to this collection instance.countMap
Returns the Map representation of this collection.
countMapisEmpty
Returns false since this collection is known to be non-empty
isEmptysize
Returns the number of values in the collection.
sizesizeDistinct
Returns the number of distinct values in the collection.
sizeDistinctMethods
[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 amount times.
addvalue added amount times.Definition
add(value: T, amount?: number): WithElem<Tp, T>['nonEmpty'];
Parameters
| Name | Type | Description |
|---|---|---|
value | T | the value to add |
amount | number | (default: 1) the amount of values to add |
HashMultiSet.of(1, 2).add(2).toArray() // => [1, 2, 2]
HashMultiSet.of(1, 2).add(3, 2).toArray() // => [1, 2, 3, 3]
amount < 0 will be normalized to 0
Overrides
addAll
Returns the collection with the values in values added.
addAllvalues added.Definition
addAll(values: StreamSource<T>): WithElem<Tp, T>['nonEmpty'];
Parameters
| Name | Type | Description |
|---|---|---|
values | StreamSource<T> | a StreamSource containing values to add |
HashMultiSet.of(1, 2).addAll([2, 3]).toArray() // => [1, 2, 2, 3]
Overrides
addEntries
Returns the collection where for every entry in entries consisting of a tuple of a value and an amount, that value is added amount times.
addEntriesentries consisting of a tuple of a value and an amount, that value is added amount times.Definition
addEntries(entries: StreamSource<readonly [T, number]>): WithElem<Tp, T>['nonEmpty'];
Parameters
| Name | Type | Description |
|---|---|---|
entries | StreamSource<readonly [T, number]> | a StreamSource containing tuples that contain a value and an amount |
HashMultiSet.of(1, 2).addEntries([[2, 2], [3, 2]]).toArray()
// => [1, 2, 2, 2, 3, 3]
Overrides
asNormal
Returns this collection typed as a 'possibly empty' collection.
asNormalassumeNonEmpty
Returns the collection as a .NonEmpty type
assumeNonEmptyDefinition
assumeNonEmpty(): WithElem<Tp, T>['nonEmpty'];
RimbuError.EmptyCollectionAssumedNonEmptyError if the collection is empty
HashMultiSet.empty<number>().assumeNonEmpty() // => throws
const m: HashMultiSet<number> = HashMultiSet.of(1, 2)
const m2: HashMultiSet.NonEmpty<number> = m // => compiler error
const m3: HashMultiSet.NonEmpty<number> = m.assumeNonEmpty()
returns reference to this collection
Overrides
count
Returns the amount of occurrances of the given value in the collection.
countvalue in the collection.filterEntries
Returns the collection containing only those values for which the given pred function returns true.
filterEntriespred function returns true.Definitions
filterEntries<TF extends T>(pred: (entry: readonly [T, number], index: number) => entry is [TF, number], options?: {
negate?: false | undefined;
}): WithElem<Tp, TF>['normal'];
filterEntries<TF extends T>(pred: (entry: readonly [T, number], index: number) => entry is [TF, number], options: {
negate: true;
}): WithElem<Tp, Exclude<T, TF>>['normal'];
filterEntries(pred: (entry: readonly [T, number], index: number) => boolean, options?: {
negate?: boolean;
}): WithElem<Tp, T>['normal'];
Type parameters
| Name | Constraints | Description |
|---|---|---|
| TF | T |
Parameters
| Name | Type | Description |
|---|---|---|
pred | (entry: readonly [T, number], index: number) => entry is [TF, number] | a predicate function receiving: - entry: the next entry consisting of the value and its count- index: the entry index- halt: a function that, when called, ensures no next entries are passed |
options | {negate?: false | undefined;} | (optional) an object containing the following properties: - negate: (default: false) when true will negate the predicate |
if the predicate is a type guard, the return type is automatically inferred
HashMultiSet.of(1, 2, 2, 3)
.filterEntries(entry => entry[1] > 1)
.toArray()
// => [[2, 2]]
Overrides
forEach
Performs given function f for each value of the collection, using given state as initial traversal state.
forEachf for each value of the collection, using given state as initial traversal state.Definition
forEach(f: (value: T, index: number, halt: () => void) => void, options?: {
state?: TraverseState;
}): void;
Parameters
| Name | Type | Description |
|---|---|---|
f | (value: T, index: number, halt: () => void) => void | the function to perform for each value, receiving: - value: the next value- index: the index of the value- halt: a function that, if called, ensures that no new values are passed |
options | {state?: TraverseState;} | (optional) an object containing the following properties: - state: (optional) the traversal state |
HashMultiSet.of(1, 2, 2, 3).forEach((entry, i, halt) => {
console.log(entry)
if (i >= 1) halt()
})
// => logs [1, 1] [2, 2]
Overrides
has
Returns true if the given value exists in the collection.
hasvalue exists in the collection.modifyCount
Returns the collection where the count of the given value is modified according to the given update function.
modifyCountvalue is modified according to the given update function.Definition
modifyCount(value: T, update: (currentCount: number) => number): WithElem<Tp, T>['normal'];
Parameters
| Name | Type | Description |
|---|---|---|
value | T | the value of which to modify the count |
update | (currentCount: number) => number | a function taking the current count and returning a new count. |
if the given value does not exists, the update function is called with 0. @note if the result of update is <= 0, the value will be removed (or not added)
const m = HashMultiSet.of(1, 2, 2)
m.modifyCount(1, v => v + 1).toArray() // => [1, 1, 2, 2]
m.modifyCount(3, v => v + 1).toArray() // => [1, 2, 2, 3]
Overrides
nonEmpty
Returns true since this collection is known to be non-empty
nonEmptyremove
Returns the collection where the given amount (default: 'ALL') of the given value are removed.
removeamount (default: 'ALL') of the given value are removed.Definition
remove<U = T>(value: RelatedTo<T, U>, options?: {
amount?: number | 'ALL';
}): WithElem<Tp, T>['normal'];
Type parameters
| Name | Default | Description |
|---|---|---|
| U | T |
Parameters
| Name | Type | Description |
|---|---|---|
value | RelatedTo<T, U> | the value to remove |
options | {amount?: number | 'ALL';} | (optional) an object containing the following properties: - amount: (default: 'ALL') the amount of values to remove, or 'ALL' to remove all values. |
const m = HashMultiSet.of(1, 2, 2)
m.remove(5).toArray() // => [1, 2, 2]
m.remove(2).toArray() // => [1]
m.remove(2, 1).toArray() // => [1, 2]
Overrides
removeAllEvery
Returns the collection where for every value from given values StreamSource, all values in the collection are removed.
removeAllEveryvalues StreamSource, all values in the collection are removed.Definition
removeAllEvery<U = T>(values: StreamSource<RelatedTo<T, U>>): WithElem<Tp, T>['normal'];
Type parameters
| Name | Default | Description |
|---|---|---|
| U | T |
Parameters
| Name | Type | Description |
|---|---|---|
values | StreamSource<RelatedTo<T, U>> | a StreamSource containing values to remove. |
const m = HashMultiSet.of(1, 2, 2)
m.removeAllEvery([5, 6]).toArray() // => [1, 2, 2]
m.removeAllEvery([2, 3]).toArray() // => [1]
Overrides
removeAllSingle
Returns the collection where every single value from given values StreamSource is removed.
removeAllSinglevalues StreamSource is removed.Definition
removeAllSingle<U = T>(values: StreamSource<RelatedTo<T, U>>): WithElem<Tp, T>['normal'];
Type parameters
| Name | Default | Description |
|---|---|---|
| U | T |
Parameters
| Name | Type | Description |
|---|---|---|
values | StreamSource<RelatedTo<T, U>> | a StreamSource containing values to remove. |
const m = HashMultiSet.of(1, 2, 2)
m.removeAllSingle([5, 6]).toArray() // => [1, 2, 2]
m.removeAllSingle([2, 3]).toArray() // => [1, 2]
m.removeAllSingle([2, 3, 2]).toArray() // => [1]
Overrides
setCount
Returns the collection where the amount of values of value if set to amount.
setCountvalue if set to amount.Definition
setCount(value: T, amount: number): WithElem<Tp, T>['normal'];
Parameters
| Name | Type | Description |
|---|---|---|
value | T | the value of which to set the amount |
amount | number | the new amount of values |
if amount <= 0, the value will be removed
const m = HashMultiSet.of(1, 2, 2)
m.setCount(1, 2).toArray() // => [1, 1, 2, 2]
m.setCount(2, 0).toArray() // => [1]
Overrides
stream
Returns a non-empty Stream containing all values of this collection.
streamDefinition
stream(): Stream.NonEmpty<T>;
HashMultiSet.of(1, 2, 2).stream().toArray() // => [1, 2, 2]
Overrides
NonEmpty.stream, NonEmpty.stream, VariantMultiSetBase.stream
streamDistinct
Returns a non-empty Stream containing all distinct values of this collection.
streamDistinctDefinition
streamDistinct(): Stream.NonEmpty<T>;
HashMultiSet.of(1, 2, 2).stream().toArray() // => [1, 2]
Overrides
toArray
Returns a non-empty array containing all values in this collection.
toArrayDefinition
toArray(): ArrayNonEmpty<T>;
HashMultiSet.of(1, 2, 2).toArray() // => [1, 2, 2]
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.
toBuildertoJSON
Returns a JSON representation of this collection.
toJSON