跳转到内容

Sorted-Multiset<T>

SortedMultiset 是一种保持元素(Value)始终有序的集合容器,且允许插入重复的元素

默认情况下,它使用 SortedBlockArray 以换取最佳的综合读写性能,见 解决方案

export class SortedMultiset<
T,
Kernel extends SortedKernel<T> = SortedBlockArray<T>
> extends InternalIterable<T>;
方法描述
constructor(compareFn?, kernelFactory?)构造一个新的 SortedMultisetcompareFn 定义元素的排序规则;kernelFactory 可选,用于提供自定义存储内核实例。
方法描述复杂度 (默认内核)
add(value)向集合中添加一个元素,允许重复。O(B + N/B)
has(value)检查集合中是否存在指定的元素。O(log N)
delete(value)移除指定元素的所有副本。返回是否移除成功。O(B + N/B)
deleteOne(value)仅移除指定元素的一个副本。O(B + N/B)

插入与删除是稳定的操作,其行为类似一个队列:

  • add 重复元素时,新元素总是被插入到相同元素的最后。
  • deleteOne 时,总是删除最早插入的元素。
  • 如果需要更灵活的删除行为,请使用后文的方法。
方法描述复杂度 (默认内核)
count(value)返回指定元素在集合中出现的次数。O(log N)
equal_range(value)返回一个游标元组 [start, end],包含所有等于该值的元素区间。O(log N)
lower_bound(value)返回指向第一个不小于给定值的元素游标。O(log N)
upper_bound(value)返回指向第一个大于给定值的元素游标。O(log N)
lowerBound(value)返回第一个不小于给定值的元素的逻辑排名 (Rank)。O(log N)
upperBound(value)返回第一个大于给定值的元素的逻辑排名 (Rank)。O(log N)
rank(value)lowerBound 的别名。O(log N)
kth(index)返回逻辑排名为 index 的元素。O(log N)
min()返回集合中最小的元素。O(1)
max()返回集合中最大的元素。O(1)
方法描述复杂度
size返回集合中元素的总数。O(1)
lengthsize 的别名。O(1)
isEmpty()检查集合是否为空。O(1)
clear(reuse = true)清空所有数据。O(1)
方法描述
cursor(index = 0)返回一个指向指定逻辑排名的双向随机访问游标。
values()返回所有元素的 ES6 迭代器。
[Symbol.iterator]()默认迭代器,等同于 values()

该类继承自 Internal-Iterable