@blackglory/structures 0.14.14 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +661 -92
- package/lib/async-generator-emitter.js +2 -5
- package/lib/async-generator-emitter.js.map +1 -1
- package/lib/big-map.js +1 -3
- package/lib/big-map.js.map +1 -1
- package/lib/big-set.js +1 -3
- package/lib/big-set.js.map +1 -1
- package/lib/{bit-set.d.ts → bit-set/bit-set.d.ts} +5 -2
- package/lib/{bit-set.js → bit-set/bit-set.js} +43 -34
- package/lib/bit-set/bit-set.js.map +1 -0
- package/lib/{typed-bit-set.d.ts → bit-set/dynamic-typed-bit-set.d.ts} +6 -4
- package/lib/bit-set/dynamic-typed-bit-set.js +95 -0
- package/lib/bit-set/dynamic-typed-bit-set.js.map +1 -0
- package/lib/bit-set/index.d.ts +4 -0
- package/lib/bit-set/index.js +5 -0
- package/lib/bit-set/index.js.map +1 -0
- package/lib/bit-set/resizable-typed-bit-set.d.ts +22 -0
- package/lib/{typed-bit-set.js → bit-set/resizable-typed-bit-set.js} +37 -39
- package/lib/bit-set/resizable-typed-bit-set.js.map +1 -0
- package/lib/bit-set/typed-bit-set.d.ts +22 -0
- package/lib/bit-set/typed-bit-set.js +99 -0
- package/lib/bit-set/typed-bit-set.js.map +1 -0
- package/lib/box.js +1 -0
- package/lib/box.js.map +1 -1
- package/lib/disjoint-set.js +2 -4
- package/lib/disjoint-set.js.map +1 -1
- package/lib/dynamic-typed-array.d.ts +12 -9
- package/lib/dynamic-typed-array.js +51 -66
- package/lib/dynamic-typed-array.js.map +1 -1
- package/lib/emitter.js +3 -7
- package/lib/emitter.js.map +1 -1
- package/lib/expirable-map.js +9 -15
- package/lib/expirable-map.js.map +1 -1
- package/lib/generator-emitter.js +2 -5
- package/lib/generator-emitter.js.map +1 -1
- package/lib/hash-map.js +2 -1
- package/lib/hash-map.js.map +1 -1
- package/lib/hash-set.js +2 -1
- package/lib/hash-set.js.map +1 -1
- package/lib/index.d.ts +5 -7
- package/lib/index.js +5 -7
- package/lib/index.js.map +1 -1
- package/lib/lru-map.js +2 -1
- package/lib/lru-map.js.map +1 -1
- package/lib/queue.js +1 -3
- package/lib/queue.js.map +1 -1
- package/lib/radix-tree.js +6 -7
- package/lib/radix-tree.js.map +1 -1
- package/lib/resizable-typed-array.d.ts +32 -0
- package/lib/resizable-typed-array.js +127 -0
- package/lib/resizable-typed-array.js.map +1 -0
- package/lib/sorted-set.js +2 -1
- package/lib/sorted-set.js.map +1 -1
- package/lib/sparse-map/clean-sparse-map.d.ts +18 -0
- package/lib/sparse-map/clean-sparse-map.js +74 -0
- package/lib/sparse-map/clean-sparse-map.js.map +1 -0
- package/lib/sparse-map/dynamic-typed-clean-sparse-map-lite.d.ts +21 -0
- package/lib/sparse-map/dynamic-typed-clean-sparse-map-lite.js +87 -0
- package/lib/sparse-map/dynamic-typed-clean-sparse-map-lite.js.map +1 -0
- package/lib/sparse-map/dynamic-typed-sparse-map-lite.d.ts +21 -0
- package/lib/sparse-map/dynamic-typed-sparse-map-lite.js +94 -0
- package/lib/sparse-map/dynamic-typed-sparse-map-lite.js.map +1 -0
- package/lib/sparse-map/index.d.ts +10 -0
- package/lib/sparse-map/index.js +11 -0
- package/lib/sparse-map/index.js.map +1 -0
- package/lib/sparse-map/resizable-typed-clean-sparse-map-lite.d.ts +21 -0
- package/lib/sparse-map/resizable-typed-clean-sparse-map-lite.js +85 -0
- package/lib/sparse-map/resizable-typed-clean-sparse-map-lite.js.map +1 -0
- package/lib/sparse-map/resizable-typed-sparse-map-lite.d.ts +21 -0
- package/lib/sparse-map/resizable-typed-sparse-map-lite.js +92 -0
- package/lib/sparse-map/resizable-typed-sparse-map-lite.js.map +1 -0
- package/lib/{sparse-map.d.ts → sparse-map/sparse-map.d.ts} +6 -5
- package/lib/sparse-map/sparse-map.js +86 -0
- package/lib/sparse-map/sparse-map.js.map +1 -0
- package/lib/sparse-map/typed-clean-sparse-map-lite.d.ts +21 -0
- package/lib/sparse-map/typed-clean-sparse-map-lite.js +92 -0
- package/lib/sparse-map/typed-clean-sparse-map-lite.js.map +1 -0
- package/lib/sparse-map/typed-clean-sparse-map.d.ts +22 -0
- package/lib/sparse-map/typed-clean-sparse-map.js +117 -0
- package/lib/sparse-map/typed-clean-sparse-map.js.map +1 -0
- package/lib/sparse-map/typed-sparse-map-lite.d.ts +21 -0
- package/lib/sparse-map/typed-sparse-map-lite.js +109 -0
- package/lib/sparse-map/typed-sparse-map-lite.js.map +1 -0
- package/lib/sparse-map/typed-sparse-map.d.ts +21 -0
- package/lib/sparse-map/typed-sparse-map.js +130 -0
- package/lib/sparse-map/typed-sparse-map.js.map +1 -0
- package/lib/sparse-set/clean-sparse-set.d.ts +13 -0
- package/lib/sparse-set/clean-sparse-set.js +57 -0
- package/lib/sparse-set/clean-sparse-set.js.map +1 -0
- package/lib/{typed-sparse-set.d.ts → sparse-set/dynamic-typed-clean-sparse-set-lite.d.ts} +6 -6
- package/lib/sparse-set/dynamic-typed-clean-sparse-set-lite.js +51 -0
- package/lib/sparse-set/dynamic-typed-clean-sparse-set-lite.js.map +1 -0
- package/lib/sparse-set/dynamic-typed-clean-sparse-set.d.ts +16 -0
- package/lib/sparse-set/dynamic-typed-clean-sparse-set.js +82 -0
- package/lib/sparse-set/dynamic-typed-clean-sparse-set.js.map +1 -0
- package/lib/sparse-set/dynamic-typed-sparse-set-lite.d.ts +15 -0
- package/lib/sparse-set/dynamic-typed-sparse-set-lite.js +52 -0
- package/lib/sparse-set/dynamic-typed-sparse-set-lite.js.map +1 -0
- package/lib/sparse-set/dynamic-typed-sparse-set.d.ts +15 -0
- package/lib/sparse-set/dynamic-typed-sparse-set.js +75 -0
- package/lib/sparse-set/dynamic-typed-sparse-set.js.map +1 -0
- package/lib/sparse-set/index.d.ts +14 -0
- package/lib/sparse-set/index.js +15 -0
- package/lib/sparse-set/index.js.map +1 -0
- package/lib/sparse-set/resizable-typed-clean-sparse-set-lite.d.ts +15 -0
- package/lib/sparse-set/resizable-typed-clean-sparse-set-lite.js +51 -0
- package/lib/sparse-set/resizable-typed-clean-sparse-set-lite.js.map +1 -0
- package/lib/sparse-set/resizable-typed-clean-sparse-set.d.ts +16 -0
- package/lib/sparse-set/resizable-typed-clean-sparse-set.js +83 -0
- package/lib/sparse-set/resizable-typed-clean-sparse-set.js.map +1 -0
- package/lib/sparse-set/resizable-typed-sparse-set-lite.d.ts +15 -0
- package/lib/sparse-set/resizable-typed-sparse-set-lite.js +52 -0
- package/lib/sparse-set/resizable-typed-sparse-set-lite.js.map +1 -0
- package/lib/sparse-set/resizable-typed-sparse-set.d.ts +15 -0
- package/lib/sparse-set/resizable-typed-sparse-set.js +76 -0
- package/lib/sparse-set/resizable-typed-sparse-set.js.map +1 -0
- package/lib/{sparse-set.d.ts → sparse-set/sparse-set.d.ts} +3 -4
- package/lib/sparse-set/sparse-set.js +60 -0
- package/lib/sparse-set/sparse-set.js.map +1 -0
- package/lib/sparse-set/typed-clean-sparse-set-lite.d.ts +15 -0
- package/lib/sparse-set/typed-clean-sparse-set-lite.js +55 -0
- package/lib/sparse-set/typed-clean-sparse-set-lite.js.map +1 -0
- package/lib/sparse-set/typed-clean-sparse-set.d.ts +16 -0
- package/lib/sparse-set/typed-clean-sparse-set.js +80 -0
- package/lib/sparse-set/typed-clean-sparse-set.js.map +1 -0
- package/lib/sparse-set/typed-sparse-set-lite.d.ts +15 -0
- package/lib/sparse-set/typed-sparse-set-lite.js +60 -0
- package/lib/sparse-set/typed-sparse-set-lite.js.map +1 -0
- package/lib/sparse-set/typed-sparse-set.d.ts +15 -0
- package/lib/sparse-set/typed-sparse-set.js +81 -0
- package/lib/sparse-set/typed-sparse-set.js.map +1 -0
- package/lib/string-radix-tree.js +6 -7
- package/lib/string-radix-tree.js.map +1 -1
- package/lib/string-trie-map.js +3 -4
- package/lib/string-trie-map.js.map +1 -1
- package/lib/tlru-map.js +6 -6
- package/lib/tlru-map.js.map +1 -1
- package/lib/trie-map.js +3 -4
- package/lib/trie-map.js.map +1 -1
- package/lib/unique-queue.js +1 -3
- package/lib/unique-queue.js.map +1 -1
- package/lib/utils/compute-new-capacity.d.ts +1 -0
- package/lib/utils/compute-new-capacity.js +36 -0
- package/lib/utils/compute-new-capacity.js.map +1 -0
- package/lib/utils/get-max-value-of-unsigned-typed-array.d.ts +3 -0
- package/lib/utils/get-max-value-of-unsigned-typed-array.js +13 -0
- package/lib/utils/get-max-value-of-unsigned-typed-array.js.map +1 -0
- package/lib/utils/skip-list.js +11 -9
- package/lib/utils/skip-list.js.map +1 -1
- package/lib/utils/trailing-zeros.js +1 -1
- package/lib/utils/trailing-zeros.js.map +1 -1
- package/package.json +28 -31
- package/src/{bit-set.ts → bit-set/bit-set.ts} +47 -31
- package/src/bit-set/dynamic-typed-bit-set.ts +131 -0
- package/src/bit-set/index.ts +4 -0
- package/src/{typed-bit-set.ts → bit-set/resizable-typed-bit-set.ts} +38 -36
- package/src/bit-set/typed-bit-set.ts +134 -0
- package/src/dynamic-typed-array.ts +67 -82
- package/src/index.ts +5 -7
- package/src/radix-tree.ts +3 -3
- package/src/resizable-typed-array.ts +214 -0
- package/src/sparse-map/clean-sparse-map.ts +84 -0
- package/src/sparse-map/dynamic-typed-clean-sparse-map-lite.ts +109 -0
- package/src/sparse-map/dynamic-typed-sparse-map-lite.ts +124 -0
- package/src/sparse-map/index.ts +11 -0
- package/src/sparse-map/resizable-typed-clean-sparse-map-lite.ts +107 -0
- package/src/sparse-map/resizable-typed-sparse-map-lite.ts +122 -0
- package/src/sparse-map/sparse-map.ts +104 -0
- package/src/sparse-map/typed-clean-sparse-map-lite.ts +116 -0
- package/src/sparse-map/typed-clean-sparse-map.ts +149 -0
- package/src/sparse-map/typed-sparse-map-lite.ts +141 -0
- package/src/sparse-map/typed-sparse-map.ts +169 -0
- package/src/sparse-set/clean-sparse-set.ts +76 -0
- package/src/sparse-set/dynamic-typed-clean-sparse-set-lite.ts +64 -0
- package/src/sparse-set/dynamic-typed-clean-sparse-set.ts +101 -0
- package/src/sparse-set/dynamic-typed-sparse-set-lite.ts +67 -0
- package/src/sparse-set/dynamic-typed-sparse-set.ts +93 -0
- package/src/sparse-set/index.ts +15 -0
- package/src/sparse-set/resizable-typed-clean-sparse-set-lite.ts +64 -0
- package/src/sparse-set/resizable-typed-clean-sparse-set.ts +108 -0
- package/src/sparse-set/resizable-typed-sparse-set-lite.ts +67 -0
- package/src/sparse-set/resizable-typed-sparse-set.ts +97 -0
- package/src/sparse-set/sparse-set.ts +79 -0
- package/src/sparse-set/typed-clean-sparse-set-lite.ts +67 -0
- package/src/sparse-set/typed-clean-sparse-set.ts +100 -0
- package/src/sparse-set/typed-sparse-set-lite.ts +74 -0
- package/src/sparse-set/typed-sparse-set.ts +102 -0
- package/src/string-radix-tree.ts +3 -3
- package/src/utils/compute-new-capacity.ts +39 -0
- package/src/utils/get-max-value-of-unsigned-typed-array.ts +19 -0
- package/src/utils/skip-list.ts +1 -1
- package/src/utils/trailing-zeros.ts +2 -3
- package/lib/bit-set.js.map +0 -1
- package/lib/sparse-map.js +0 -76
- package/lib/sparse-map.js.map +0 -1
- package/lib/sparse-set.js +0 -63
- package/lib/sparse-set.js.map +0 -1
- package/lib/typed-bit-set.js.map +0 -1
- package/lib/typed-sparse-map.d.ts +0 -20
- package/lib/typed-sparse-map.js +0 -83
- package/lib/typed-sparse-map.js.map +0 -1
- package/lib/typed-sparse-set.js +0 -59
- package/lib/typed-sparse-set.js.map +0 -1
- package/src/sparse-map.ts +0 -82
- package/src/sparse-set.ts +0 -74
- package/src/typed-sparse-map.ts +0 -97
- package/src/typed-sparse-set.ts +0 -73
package/README.md
CHANGED
|
@@ -248,7 +248,6 @@ class HashMap<K, V, Hash = unknown> {
|
|
|
248
248
|
class HashSet<V, Hash = unknown> implements Iterable<V> {
|
|
249
249
|
get [Symbol.toStringTag](): string
|
|
250
250
|
get size(): number
|
|
251
|
-
[Symbol.iterator](): IterableIterator<V>
|
|
252
251
|
|
|
253
252
|
constructor(hash: (value: V) => Hash)
|
|
254
253
|
|
|
@@ -416,39 +415,480 @@ class StringRadixTree<T> {
|
|
|
416
415
|
Note that you might expect this data structure to be more space efficient than `BigMap`, but it doesn't.
|
|
417
416
|
In V8, it can only store about 80% of data of `BigMap`.
|
|
418
417
|
|
|
419
|
-
###
|
|
418
|
+
### DynamicTypedArray
|
|
419
|
+
```ts
|
|
420
|
+
class DynamicTypedArray<
|
|
421
|
+
T extends TypedArrayConstructor
|
|
422
|
+
> implements Iterable<number> {
|
|
423
|
+
get [Symbol.toStringTag](): string
|
|
424
|
+
get capacity(): number
|
|
425
|
+
get length(): number
|
|
426
|
+
readonly BYTES_PER_ELEMENT: number
|
|
427
|
+
readonly growthFactor: number
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* `DynamicTypedArray` cannot respond to any operations on the internal array,
|
|
431
|
+
* you must ensure that indexes accessed are less than the length of `DynamicTypedArray`.
|
|
432
|
+
*/
|
|
433
|
+
get internalTypedArray(): TypedArrayOfConstructor<T>
|
|
434
|
+
|
|
435
|
+
constructor(
|
|
436
|
+
typedArrayConstructor: T
|
|
437
|
+
, options?: {
|
|
438
|
+
initialCapacity?: number = 0
|
|
439
|
+
growthFactor?: number = 1.5
|
|
440
|
+
fillValue?: number = 0
|
|
441
|
+
}
|
|
442
|
+
)
|
|
443
|
+
|
|
444
|
+
values(): IterableIterator<number>
|
|
445
|
+
|
|
446
|
+
set(index: number, value: number): void
|
|
447
|
+
setValues(index: number, values: ArrayLike<number>): void
|
|
448
|
+
|
|
449
|
+
get(index: number): number | undefined
|
|
450
|
+
|
|
451
|
+
push(...values: number[]): void
|
|
452
|
+
pop(): number | undefined
|
|
453
|
+
|
|
454
|
+
clear(): void
|
|
455
|
+
shrink(): void
|
|
456
|
+
|
|
457
|
+
sort(compare?: (a: number, b: number) => number): void
|
|
458
|
+
}
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
This implementation applies to versions prior to ES2024,
|
|
462
|
+
you might prefer using `ResizableTypedArray`.
|
|
463
|
+
|
|
464
|
+
### ResizableTypedArray
|
|
465
|
+
```ts
|
|
466
|
+
class ResizableTypedArray<T extends TypedArrayConstructor> {
|
|
467
|
+
readonly maxCapacity: number
|
|
468
|
+
readonly growthFactor: number
|
|
469
|
+
readonly BYTES_PER_ELEMENT: number
|
|
470
|
+
readonly internalTypedArray: TypedArrayOfConstructor<T>
|
|
471
|
+
|
|
472
|
+
get [Symbol.toStringTag](): string
|
|
473
|
+
get capacity(): number
|
|
474
|
+
get length(): number
|
|
475
|
+
|
|
476
|
+
constructor(
|
|
477
|
+
typedArrayConstructor: T
|
|
478
|
+
, options: {
|
|
479
|
+
maxCapacity: number
|
|
480
|
+
|
|
481
|
+
initialCapacity?: capacity = 0
|
|
482
|
+
growthFactor?: number = 1.5
|
|
483
|
+
fillValue?: number = 0
|
|
484
|
+
}
|
|
485
|
+
)
|
|
486
|
+
|
|
487
|
+
set(index: number, value: number): void
|
|
488
|
+
setValues(index: number, values: ArrayLike<number>): void
|
|
489
|
+
|
|
490
|
+
get(index: number): number | undefined
|
|
491
|
+
|
|
492
|
+
push(...values: number[]): void
|
|
493
|
+
pop(): number | undefined
|
|
494
|
+
|
|
495
|
+
clear(): void
|
|
496
|
+
shrink(): void
|
|
497
|
+
|
|
498
|
+
sort(compare?: (a: number, b: number) => number): void
|
|
499
|
+
}
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
This implementation is based on Resizable Array Buffers,
|
|
503
|
+
support for which was introduced in ES2024.
|
|
504
|
+
|
|
505
|
+
### SortedSet
|
|
506
|
+
```ts
|
|
507
|
+
class SortedSet<T> implements Iterable<T> {
|
|
508
|
+
get [Symbol.toStringTag](): string
|
|
509
|
+
|
|
510
|
+
constructor(compare: (a: T, b: T) => number)
|
|
511
|
+
|
|
512
|
+
values(): IterableIterator<T>
|
|
513
|
+
|
|
514
|
+
has(value: T): boolean
|
|
515
|
+
add(value: T): void
|
|
516
|
+
delete(value: T): void
|
|
517
|
+
}
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
### DisjointSet
|
|
521
|
+
```ts
|
|
522
|
+
class DisjointSet {
|
|
523
|
+
has(value: number): boolean
|
|
524
|
+
sets(): number[][]
|
|
525
|
+
|
|
526
|
+
makeSet(value: number): number
|
|
527
|
+
union(a: number, b: number): void
|
|
528
|
+
find(value: number): number
|
|
529
|
+
}
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
### Bit Set
|
|
533
|
+
#### BitSet
|
|
534
|
+
```ts
|
|
535
|
+
class BitSet implements Iterable<number> {
|
|
536
|
+
get [Symbol.toStringTag](): string
|
|
537
|
+
get size(): number
|
|
538
|
+
|
|
539
|
+
constructor(bitsPerElement: number = 8)
|
|
540
|
+
|
|
541
|
+
values(): IterableIterator<number>
|
|
542
|
+
|
|
543
|
+
has(value: number): boolean
|
|
544
|
+
add(value: number): boolean
|
|
545
|
+
delete(value: number): boolean
|
|
546
|
+
|
|
547
|
+
clear(): void
|
|
548
|
+
|
|
549
|
+
clone(): BitSet
|
|
550
|
+
}
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
Due to the length of arrays supported by JavaScript,
|
|
554
|
+
`BitSet` cannot support very large values.
|
|
555
|
+
|
|
556
|
+
#### TypedBitSet
|
|
557
|
+
```ts
|
|
558
|
+
class TypedBitSet implements Iterable<number> {
|
|
559
|
+
get [Symbol.toStringTag](): string
|
|
560
|
+
get capacity(): number
|
|
561
|
+
get size(): number
|
|
562
|
+
|
|
563
|
+
constructor(array: UnsignedTypedArray)
|
|
564
|
+
|
|
565
|
+
values(): IterableIterator<number>
|
|
566
|
+
|
|
567
|
+
has(value: number): boolean
|
|
568
|
+
add(value: number): boolean
|
|
569
|
+
delete(value: number): boolean
|
|
570
|
+
|
|
571
|
+
clear(): void
|
|
572
|
+
}
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
#### DynamicTypedBitSet
|
|
576
|
+
```ts
|
|
577
|
+
class DynamicTypedBitSet implements Iterable<number> {
|
|
578
|
+
get [Symbol.toStringTag](): string
|
|
579
|
+
get capacity(): number
|
|
580
|
+
get size(): number
|
|
581
|
+
|
|
582
|
+
constructor(array: array: DynamicTypedArray<UnsignedTypedArrayConstructor>)
|
|
583
|
+
|
|
584
|
+
values(): IterableIterator<number>
|
|
585
|
+
|
|
586
|
+
has(value: number): boolean
|
|
587
|
+
add(value: number): boolean
|
|
588
|
+
delete(value: number): boolean
|
|
589
|
+
|
|
590
|
+
clear(): void
|
|
591
|
+
}
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
Due to the length of arrays supported by JavaScript,
|
|
595
|
+
`DynamicTypedBitSit` cannot support very large values.
|
|
596
|
+
|
|
597
|
+
#### ResizableTypedBitSet
|
|
598
|
+
```ts
|
|
599
|
+
class ResizableTypedBitSet implements Iterable<number> {
|
|
600
|
+
get [Symbol.toStringTag](): string
|
|
601
|
+
get size(): number
|
|
602
|
+
|
|
603
|
+
constructor(array: ResizableTypedArray<UnsignedTypedArrayConstructor>)
|
|
604
|
+
|
|
605
|
+
values(): IterableIterator<number>
|
|
606
|
+
|
|
607
|
+
has(value: number): boolean
|
|
608
|
+
add(value: number): boolean
|
|
609
|
+
delete(value: number): boolean
|
|
610
|
+
|
|
611
|
+
clear(): void
|
|
612
|
+
}
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
Due to the length of arrays supported by JavaScript,
|
|
616
|
+
`ResizableTypedBitSit` cannot support very large values.
|
|
617
|
+
|
|
618
|
+
### Sparse Set
|
|
619
|
+
There are many implementations.
|
|
620
|
+
Based on benchmark results, `TypedCleanSparseSet` is the fastest,
|
|
621
|
+
followed by `TypedCleanSparseSetLite`.
|
|
622
|
+
If array resizing is required,
|
|
623
|
+
choose `DynamicTypedCleanSparseSetLite` or `ResizableTypedCleanSparseSetLite`.
|
|
624
|
+
|
|
625
|
+
#### SparseSet
|
|
626
|
+
```ts
|
|
627
|
+
class SparseSet implements Iterable<number> {
|
|
628
|
+
get [Symbol.toStringTag](): string
|
|
629
|
+
get size(): number
|
|
630
|
+
|
|
631
|
+
values(): IterableIterator<number>
|
|
632
|
+
|
|
633
|
+
has(value: number): boolean
|
|
634
|
+
add(value: number): void
|
|
635
|
+
delete(value: number): boolean
|
|
636
|
+
|
|
637
|
+
clear(): void
|
|
638
|
+
|
|
639
|
+
clone(): SparseSet
|
|
640
|
+
}
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
#### CleanSparseSet
|
|
644
|
+
```ts
|
|
645
|
+
class CleanSparseSet implements Iterable<number> {
|
|
646
|
+
get [Symbol.toStringTag](): string
|
|
647
|
+
get size(): number
|
|
648
|
+
|
|
649
|
+
values(): IterableIterator<number>
|
|
650
|
+
|
|
651
|
+
has(value: number): boolean
|
|
652
|
+
add(value: number): void
|
|
653
|
+
delete(value: number): boolean
|
|
654
|
+
|
|
655
|
+
clear(): void
|
|
656
|
+
|
|
657
|
+
clone(): CleanSparseSet
|
|
658
|
+
}
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
#### TypedSparseSet
|
|
662
|
+
```ts
|
|
663
|
+
class TypedSparseSet implements Iterable<number> {
|
|
664
|
+
get [Symbol.toStringTag](): string
|
|
665
|
+
get size(): number
|
|
666
|
+
|
|
667
|
+
constructor(array: UnsignedTypedArray<ArrayBuffer>)
|
|
668
|
+
|
|
669
|
+
values(): IterableIterator<number>
|
|
670
|
+
|
|
671
|
+
has(value: number): boolean
|
|
672
|
+
add(value: number): void
|
|
673
|
+
delete(value: number): boolean
|
|
674
|
+
|
|
675
|
+
clear(): void
|
|
676
|
+
}
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
#### TypedSparseSetLite
|
|
680
|
+
```ts
|
|
681
|
+
class TypedSparseSetLite implements Iterable<number> {
|
|
682
|
+
get [Symbol.toStringTag](): string
|
|
683
|
+
get size(): number
|
|
684
|
+
|
|
685
|
+
constructor(array: UnsignedTypedArray<ArrayBuffer>)
|
|
686
|
+
|
|
687
|
+
values(): IterableIterator<number>
|
|
688
|
+
|
|
689
|
+
has(value: number): boolean
|
|
690
|
+
add(value: number): void
|
|
691
|
+
delete(value: number): boolean
|
|
692
|
+
|
|
693
|
+
clear(): void
|
|
694
|
+
}
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
#### TypedCleanSparseSet
|
|
698
|
+
```ts
|
|
699
|
+
class TypedCleanSparseSet implements Iterable<number> {
|
|
700
|
+
get [Symbol.toStringTag](): string
|
|
701
|
+
get size(): number
|
|
702
|
+
|
|
703
|
+
constructor(array: UnsignedTypedArray<ArrayBuffer>)
|
|
704
|
+
|
|
705
|
+
values(): IterableIterator<number>
|
|
706
|
+
|
|
707
|
+
has(value: number): boolean
|
|
708
|
+
add(value: number): void
|
|
709
|
+
delete(value: number): boolean
|
|
710
|
+
|
|
711
|
+
clear(): void
|
|
712
|
+
}
|
|
713
|
+
```
|
|
714
|
+
|
|
715
|
+
#### TypedCleanSparseSetLite
|
|
716
|
+
```ts
|
|
717
|
+
class TypedCleanSparseSetLite implements Iterable<number> {
|
|
718
|
+
get [Symbol.toStringTag](): string
|
|
719
|
+
get size(): number
|
|
720
|
+
|
|
721
|
+
constructor(array: UnsignedTypedArray<ArrayBuffer>)
|
|
722
|
+
|
|
723
|
+
values(): IterableIterator<number>
|
|
724
|
+
|
|
725
|
+
has(value: number): boolean
|
|
726
|
+
add(value: number): void
|
|
727
|
+
delete(value: number): boolean
|
|
728
|
+
|
|
729
|
+
clear(): void
|
|
730
|
+
}
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
#### DynamicTypedSparseSet
|
|
734
|
+
```ts
|
|
735
|
+
class DynamicTypedSparseSet implements Iterable<number> {
|
|
736
|
+
get [Symbol.toStringTag](): string
|
|
737
|
+
get size(): number
|
|
738
|
+
|
|
739
|
+
constructor(array: DynamicTypedArray<UnsignedTypedArrayConstructor>)
|
|
740
|
+
|
|
741
|
+
values(): IterableIterator<number>
|
|
742
|
+
|
|
743
|
+
has(value: number): boolean
|
|
744
|
+
add(value: number): void
|
|
745
|
+
delete(value: number): boolean
|
|
746
|
+
|
|
747
|
+
clear(): void
|
|
748
|
+
}
|
|
749
|
+
```
|
|
750
|
+
|
|
751
|
+
#### DynamicTypedSparseSetLite
|
|
752
|
+
```ts
|
|
753
|
+
class DynamicTypedSparseSetLite implements Iterable<number> {
|
|
754
|
+
get [Symbol.toStringTag](): string
|
|
755
|
+
get size(): number
|
|
756
|
+
|
|
757
|
+
constructor(array: DynamicTypedArray<UnsignedTypedArrayConstructor>)
|
|
758
|
+
|
|
759
|
+
values(): IterableIterator<number>
|
|
760
|
+
|
|
761
|
+
has(value: number): boolean
|
|
762
|
+
add(value: number): void
|
|
763
|
+
delete(value: number): boolean
|
|
764
|
+
|
|
765
|
+
clear(): void
|
|
766
|
+
}
|
|
767
|
+
```
|
|
768
|
+
|
|
769
|
+
#### DynamicTypedCleanSparseSet
|
|
420
770
|
```ts
|
|
421
|
-
class
|
|
771
|
+
class DynamicTypedCleanSparseSet implements Iterable<number> {
|
|
422
772
|
get [Symbol.toStringTag](): string
|
|
423
|
-
get [Symbol.iterator](): IterableIterator<number>
|
|
424
773
|
get size(): number
|
|
425
774
|
|
|
426
|
-
constructor(array
|
|
775
|
+
constructor(array: DynamicTypedArray<UnsignedTypedArrayConstructor>)
|
|
427
776
|
|
|
428
777
|
values(): IterableIterator<number>
|
|
429
778
|
|
|
430
779
|
has(value: number): boolean
|
|
431
780
|
add(value: number): void
|
|
432
781
|
delete(value: number): boolean
|
|
782
|
+
|
|
433
783
|
clear(): void
|
|
784
|
+
}
|
|
785
|
+
```
|
|
434
786
|
|
|
435
|
-
|
|
787
|
+
#### DynamicTypedCleanSparseSetLite
|
|
788
|
+
```ts
|
|
789
|
+
class DynamicTypedCleanSparseSetLite implements Iterable<number> {
|
|
790
|
+
get [Symbol.toStringTag](): string
|
|
791
|
+
get size(): number
|
|
792
|
+
|
|
793
|
+
constructor(array: DynamicTypedArray<UnsignedTypedArrayConstructor>)
|
|
794
|
+
|
|
795
|
+
values(): IterableIterator<number>
|
|
796
|
+
|
|
797
|
+
has(value: number): boolean
|
|
798
|
+
add(value: number): void
|
|
799
|
+
delete(value: number): boolean
|
|
800
|
+
|
|
801
|
+
clear(): void
|
|
802
|
+
}
|
|
803
|
+
```
|
|
804
|
+
|
|
805
|
+
#### ResizableTypedSparseSet
|
|
806
|
+
```ts
|
|
807
|
+
class ResizableTypedSparseSet implements Iterable<number> {
|
|
808
|
+
get [Symbol.toStringTag](): string
|
|
809
|
+
get size(): number
|
|
810
|
+
|
|
811
|
+
constructor(array: ResizableTypedArray<UnsignedTypedArrayConstructor>)
|
|
812
|
+
|
|
813
|
+
values(): IterableIterator<number>
|
|
814
|
+
|
|
815
|
+
has(value: number): boolean
|
|
816
|
+
add(value: number): void
|
|
817
|
+
delete(value: number): boolean
|
|
818
|
+
|
|
819
|
+
clear(): void
|
|
820
|
+
}
|
|
821
|
+
```
|
|
822
|
+
|
|
823
|
+
#### ResizableTypedSparseSetLite
|
|
824
|
+
```ts
|
|
825
|
+
class ResizableTypedSparseSetLite implements Iterable<number> {
|
|
826
|
+
get [Symbol.toStringTag](): string
|
|
827
|
+
get size(): number
|
|
828
|
+
|
|
829
|
+
constructor(array: ResizableTypedArray<UnsignedTypedArrayConstructor>)
|
|
830
|
+
|
|
831
|
+
values(): IterableIterator<number>
|
|
832
|
+
|
|
833
|
+
has(value: number): boolean
|
|
834
|
+
add(value: number): void
|
|
835
|
+
delete(value: number): boolean
|
|
836
|
+
|
|
837
|
+
clear(): void
|
|
838
|
+
}
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
#### ResizableTypedCleanSparseSet
|
|
842
|
+
```ts
|
|
843
|
+
class ResizableTypedCleanSparseSet implements Iterable<number> {
|
|
844
|
+
get [Symbol.toStringTag](): string
|
|
845
|
+
get size(): number
|
|
846
|
+
|
|
847
|
+
constructor(array: ResizableTypedArray<UnsignedTypedArrayConstructor>)
|
|
848
|
+
|
|
849
|
+
values(): IterableIterator<number>
|
|
850
|
+
|
|
851
|
+
has(value: number): boolean
|
|
852
|
+
add(value: number): void
|
|
853
|
+
delete(value: number): boolean
|
|
854
|
+
|
|
855
|
+
clear(): void
|
|
856
|
+
}
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
#### ResizableTypedCleanSparseSetLite
|
|
860
|
+
```ts
|
|
861
|
+
class ResizableTypedCleanSparseSetLite implements Iterable<number> {
|
|
862
|
+
get [Symbol.toStringTag](): string
|
|
863
|
+
get size(): number
|
|
864
|
+
|
|
865
|
+
constructor(array: ResizableTypedArray<UnsignedTypedArrayConstructor>)
|
|
866
|
+
|
|
867
|
+
values(): IterableIterator<number>
|
|
868
|
+
|
|
869
|
+
has(value: number): boolean
|
|
870
|
+
add(value: number): void
|
|
871
|
+
delete(value: number): boolean
|
|
872
|
+
|
|
873
|
+
clear(): void
|
|
436
874
|
}
|
|
437
875
|
```
|
|
438
876
|
|
|
439
|
-
###
|
|
877
|
+
### Sparse Map
|
|
878
|
+
There are many implementations.
|
|
879
|
+
Based on benchmark results, `TypedCleanSparseMap` is the fastest,
|
|
880
|
+
followed by `TypedCleanSparseMapLite`.
|
|
881
|
+
If array resizing is required,
|
|
882
|
+
choose `DynamicTypedCleanSparseMapLite` or `ResizableTypedCleanSparseMapLite`.
|
|
883
|
+
|
|
884
|
+
#### SparseMap
|
|
440
885
|
```ts
|
|
441
886
|
class SparseMap<T> {
|
|
442
887
|
get [Symbol.toStringTag](): string
|
|
443
888
|
get size(): number
|
|
444
889
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
* you must ensure that indexes accessed are less than the length of `SparseMap`.
|
|
448
|
-
*
|
|
449
|
-
* Keys do not correspond to indexes of the array.
|
|
450
|
-
*/
|
|
451
|
-
get internalArray(): T[]
|
|
890
|
+
readonly internalKeyArray: readonly number[]
|
|
891
|
+
readonly internalValueArray: T[]
|
|
452
892
|
|
|
453
893
|
entries(): IterableIterator<[key: number, value: T]>
|
|
454
894
|
keys(): IterableIterator<number>
|
|
@@ -459,77 +899,116 @@ class SparseMap<T> {
|
|
|
459
899
|
has(key: number): boolean
|
|
460
900
|
get(key: number): T | undefined
|
|
461
901
|
set(key: number, value: T): void
|
|
462
|
-
delete(key: number):
|
|
902
|
+
delete(key: number): boolean
|
|
903
|
+
|
|
463
904
|
clear(): void
|
|
464
905
|
}
|
|
465
906
|
```
|
|
466
907
|
|
|
467
|
-
|
|
908
|
+
#### CleanSparseMap
|
|
468
909
|
```ts
|
|
469
|
-
class
|
|
910
|
+
class CleanSparseMap<T> {
|
|
470
911
|
get [Symbol.toStringTag](): string
|
|
471
|
-
get
|
|
472
|
-
get capacity(): number
|
|
473
|
-
get length(): number
|
|
474
|
-
readonly growthFactor: number
|
|
912
|
+
get size(): number
|
|
475
913
|
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
914
|
+
readonly internalKeyArray: readonly number[]
|
|
915
|
+
readonly internalValueArray: T[]
|
|
916
|
+
|
|
917
|
+
entries(): IterableIterator<[key: number, value: T]>
|
|
918
|
+
keys(): IterableIterator<number>
|
|
919
|
+
values(): IterableIterator<T>
|
|
920
|
+
|
|
921
|
+
getInternalIndexOfKey(key: number): number | undefined
|
|
922
|
+
|
|
923
|
+
has(key: number): boolean
|
|
924
|
+
get(key: number): T | undefined
|
|
925
|
+
set(key: number, value: T): void
|
|
926
|
+
delete(key: number): boolean
|
|
927
|
+
|
|
928
|
+
clear(): void
|
|
929
|
+
}
|
|
930
|
+
```
|
|
931
|
+
|
|
932
|
+
#### TypedSparseMap
|
|
933
|
+
```ts
|
|
934
|
+
class TypedSparseMap<
|
|
935
|
+
K extends UnsignedTypedArrayConstructor
|
|
936
|
+
, V extends TypedArrayConstructor
|
|
937
|
+
> {
|
|
938
|
+
get [Symbol.toStringTag](): string
|
|
939
|
+
get size(): number
|
|
940
|
+
|
|
941
|
+
readonly internalKeyArray: TypedArrayOfConstructor<K, ArrayBuffer>
|
|
942
|
+
readonly internalValueArray: TypedArrayOfConstructor<V, ArrayBuffer>
|
|
481
943
|
|
|
482
944
|
constructor(
|
|
483
|
-
|
|
484
|
-
,
|
|
485
|
-
capacity?: number = 0
|
|
486
|
-
growthFactor?: number = 1.5
|
|
487
|
-
}
|
|
945
|
+
keys: TypedArrayOfConstructor<K, ArrayBuffer>
|
|
946
|
+
, values: TypedArrayOfConstructor<V, ArrayBuffer>
|
|
488
947
|
)
|
|
489
948
|
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
949
|
+
entries(): IterableIterator<[key: number, value: number]>
|
|
950
|
+
keys(): IterableIterator<number>
|
|
951
|
+
values(): IterableIterator<number>
|
|
952
|
+
|
|
953
|
+
getInternalIndexOfKey(key: number): number | undefined
|
|
954
|
+
|
|
955
|
+
has(key: number): boolean
|
|
956
|
+
get(key: number): number | undefined
|
|
957
|
+
set(key: number, value: number): void
|
|
958
|
+
delete(key: number): boolean
|
|
959
|
+
|
|
495
960
|
clear(): void
|
|
496
|
-
sort(compare?: (a: number, b: number) => number): void
|
|
497
961
|
}
|
|
498
962
|
```
|
|
499
963
|
|
|
500
|
-
|
|
964
|
+
#### TypedSparseMapLite
|
|
501
965
|
```ts
|
|
502
|
-
class
|
|
966
|
+
class TypedSparseMapLite<
|
|
967
|
+
K extends UnsignedTypedArrayConstructor
|
|
968
|
+
, V extends TypedArrayConstructor
|
|
969
|
+
> {
|
|
503
970
|
get [Symbol.toStringTag](): string
|
|
504
|
-
get [Symbol.iterator](): IterableIterator<number>
|
|
505
971
|
get size(): number
|
|
506
972
|
|
|
507
|
-
|
|
973
|
+
readonly internalKeyArray: TypedArrayOfConstructor<K, ArrayBuffer>
|
|
974
|
+
readonly internalValueArray: TypedArrayOfConstructor<V, ArrayBuffer>
|
|
508
975
|
|
|
976
|
+
constructor(
|
|
977
|
+
keys: TypedArrayOfConstructor<K, ArrayBuffer>
|
|
978
|
+
, values: TypedArrayOfConstructor<V, ArrayBuffer>
|
|
979
|
+
)
|
|
980
|
+
|
|
981
|
+
entries(): IterableIterator<[key: number, value: number]>
|
|
982
|
+
keys(): IterableIterator<number>
|
|
509
983
|
values(): IterableIterator<number>
|
|
510
984
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
985
|
+
getInternalIndexOfKey(key: number): number | undefined
|
|
986
|
+
|
|
987
|
+
has(key: number): boolean
|
|
988
|
+
get(key: number): number | undefined
|
|
989
|
+
set(key: number, value: number): void
|
|
990
|
+
delete(key: number): boolean
|
|
991
|
+
|
|
514
992
|
clear(): void
|
|
515
993
|
}
|
|
516
994
|
```
|
|
517
995
|
|
|
518
|
-
|
|
996
|
+
#### TypedCleanSparseMap
|
|
519
997
|
```ts
|
|
520
|
-
class
|
|
998
|
+
class TypedCleanSparseMap<
|
|
999
|
+
K extends UnsignedTypedArrayConstructor
|
|
1000
|
+
, V extends TypedArrayConstructor
|
|
1001
|
+
> {
|
|
521
1002
|
get [Symbol.toStringTag](): string
|
|
522
1003
|
get size(): number
|
|
523
1004
|
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
* you must ensure that indexes accessed are less than the length of `SparseMap`.
|
|
527
|
-
*
|
|
528
|
-
* Keys do not correspond to indexes of the array.
|
|
529
|
-
*/
|
|
530
|
-
get internalTypedArray(): TypedArrayOfConstructor<T>
|
|
1005
|
+
readonly internalKeyArray: TypedArrayOfConstructor<K, ArrayBuffer>
|
|
1006
|
+
readonly internalValueArray: TypedArrayOfConstructor<V, ArrayBuffer>
|
|
531
1007
|
|
|
532
|
-
constructor(
|
|
1008
|
+
constructor(
|
|
1009
|
+
keys: TypedArrayOfConstructor<K, ArrayBuffer>
|
|
1010
|
+
, values: TypedArrayOfConstructor<V, ArrayBuffer>
|
|
1011
|
+
)
|
|
533
1012
|
|
|
534
1013
|
entries(): IterableIterator<[key: number, value: number]>
|
|
535
1014
|
keys(): IterableIterator<number>
|
|
@@ -538,80 +1017,170 @@ class TypedSparseMap<T extends TypedArrayConstructor> {
|
|
|
538
1017
|
getInternalIndexOfKey(key: number): number | undefined
|
|
539
1018
|
|
|
540
1019
|
has(key: number): boolean
|
|
541
|
-
get(key: number):
|
|
1020
|
+
get(key: number): number | undefined
|
|
542
1021
|
set(key: number, value: number): void
|
|
543
|
-
delete(key: number):
|
|
1022
|
+
delete(key: number): boolean
|
|
1023
|
+
|
|
544
1024
|
clear(): void
|
|
545
1025
|
}
|
|
546
1026
|
```
|
|
547
1027
|
|
|
548
|
-
|
|
1028
|
+
#### TypedCleanSparseMapLite
|
|
549
1029
|
```ts
|
|
550
|
-
class
|
|
1030
|
+
class TypedCleanSparseMapLite<
|
|
1031
|
+
K extends UnsignedTypedArrayConstructor
|
|
1032
|
+
, V extends TypedArrayConstructor
|
|
1033
|
+
> {
|
|
551
1034
|
get [Symbol.toStringTag](): string
|
|
552
|
-
|
|
1035
|
+
get size(): number
|
|
553
1036
|
|
|
554
|
-
|
|
1037
|
+
readonly internalKeyArray: TypedArrayOfConstructor<K, ArrayBuffer>
|
|
1038
|
+
readonly internalValueArray: TypedArrayOfConstructor<V, ArrayBuffer>
|
|
555
1039
|
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
1040
|
+
constructor(
|
|
1041
|
+
keys: TypedArrayOfConstructor<K, ArrayBuffer>
|
|
1042
|
+
, values: TypedArrayOfConstructor<V, ArrayBuffer>
|
|
1043
|
+
)
|
|
1044
|
+
|
|
1045
|
+
entries(): IterableIterator<[key: number, value: number]>
|
|
1046
|
+
keys(): IterableIterator<number>
|
|
1047
|
+
values(): IterableIterator<number>
|
|
1048
|
+
|
|
1049
|
+
getInternalIndexOfKey(key: number): number | undefined
|
|
1050
|
+
|
|
1051
|
+
has(key: number): boolean
|
|
1052
|
+
get(key: number): number | undefined
|
|
1053
|
+
set(key: number, value: number): void
|
|
1054
|
+
delete(key: number): boolean
|
|
1055
|
+
|
|
1056
|
+
clear(): void
|
|
560
1057
|
}
|
|
561
1058
|
```
|
|
562
1059
|
|
|
563
|
-
|
|
1060
|
+
#### DynamicTypedSparseMapLite
|
|
564
1061
|
```ts
|
|
565
|
-
class
|
|
1062
|
+
class DynamicTypedSparseMapLite<
|
|
1063
|
+
K extends UnsignedTypedArrayConstructor
|
|
1064
|
+
, V extends TypedArrayConstructor
|
|
1065
|
+
> {
|
|
566
1066
|
get [Symbol.toStringTag](): string
|
|
567
1067
|
get size(): number
|
|
568
|
-
[Symbol.iterator](): IterableIterator<number>
|
|
569
1068
|
|
|
570
|
-
|
|
1069
|
+
get internalKeyArray(): TypedArrayOfConstructor<K>
|
|
1070
|
+
get internalValueArray(): TypedArrayOfConstructor<V>
|
|
1071
|
+
|
|
1072
|
+
constructor(
|
|
1073
|
+
keys: DynamicTypedArray<K>
|
|
1074
|
+
, values: DynamicTypedArray<V>
|
|
1075
|
+
)
|
|
571
1076
|
|
|
1077
|
+
entries(): IterableIterator<[key: number, value: number]>
|
|
1078
|
+
keys(): IterableIterator<number>
|
|
572
1079
|
values(): IterableIterator<number>
|
|
573
1080
|
|
|
574
|
-
|
|
575
|
-
add(value: number): boolean
|
|
576
|
-
delete(value: number): boolean
|
|
577
|
-
clear(): void
|
|
1081
|
+
getInternalIndexOfKey(key: number): number | undefined
|
|
578
1082
|
|
|
579
|
-
|
|
1083
|
+
has(key: number): boolean
|
|
1084
|
+
get(key: number): number | undefined
|
|
1085
|
+
set(key: number, value: number): void
|
|
1086
|
+
delete(key: number): boolean
|
|
1087
|
+
|
|
1088
|
+
clear(): void
|
|
580
1089
|
}
|
|
581
1090
|
```
|
|
582
1091
|
|
|
583
|
-
|
|
584
|
-
`BitSet` cannot support very large values.
|
|
585
|
-
|
|
586
|
-
### TypedBitSet
|
|
1092
|
+
#### DynamicTypedCleanSparseMapLite
|
|
587
1093
|
```ts
|
|
588
|
-
class
|
|
1094
|
+
class DynamicTypedCleanSparseMapLite<
|
|
1095
|
+
K extends UnsignedTypedArrayConstructor
|
|
1096
|
+
, V extends TypedArrayConstructor
|
|
1097
|
+
> {
|
|
589
1098
|
get [Symbol.toStringTag](): string
|
|
590
1099
|
get size(): number
|
|
591
|
-
[Symbol.iterator](): IterableIterator<number>
|
|
592
1100
|
|
|
593
|
-
|
|
1101
|
+
get internalKeyArray(): TypedArrayOfConstructor<K>
|
|
1102
|
+
get internalValueArray(): TypedArrayOfConstructor<V>
|
|
1103
|
+
|
|
1104
|
+
constructor(
|
|
1105
|
+
keys: DynamicTypedArray<K>
|
|
1106
|
+
, values: DynamicTypedArray<V>
|
|
1107
|
+
)
|
|
594
1108
|
|
|
1109
|
+
entries(): IterableIterator<[key: number, value: number]>
|
|
1110
|
+
keys(): IterableIterator<number>
|
|
595
1111
|
values(): IterableIterator<number>
|
|
596
1112
|
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
1113
|
+
getInternalIndexOfKey(key: number): number | undefined
|
|
1114
|
+
|
|
1115
|
+
has(key: number): boolean
|
|
1116
|
+
get(key: number): number | undefined
|
|
1117
|
+
set(key: number, value: number): void
|
|
1118
|
+
delete(key: number): boolean
|
|
1119
|
+
|
|
600
1120
|
clear(): void
|
|
601
1121
|
}
|
|
602
1122
|
```
|
|
603
1123
|
|
|
604
|
-
|
|
605
|
-
|
|
1124
|
+
#### ResizableTypedSparseMapLite
|
|
1125
|
+
```ts
|
|
1126
|
+
class ResizableTypedSparseMapLite<
|
|
1127
|
+
K extends UnsignedTypedArrayConstructor
|
|
1128
|
+
, V extends TypedArrayConstructor
|
|
1129
|
+
> {
|
|
1130
|
+
get [Symbol.toStringTag](): string
|
|
1131
|
+
get size(): number
|
|
606
1132
|
|
|
607
|
-
|
|
1133
|
+
readonly internalKeyArray: TypedArrayOfConstructor<K>
|
|
1134
|
+
readonly internalValueArray: TypedArrayOfConstructor<V>
|
|
1135
|
+
|
|
1136
|
+
constructor(
|
|
1137
|
+
keys: ResizableTypedArray<K>
|
|
1138
|
+
, values: ResizableTypedArray<V>
|
|
1139
|
+
)
|
|
1140
|
+
|
|
1141
|
+
entries(): IterableIterator<[key: number, value: number]>
|
|
1142
|
+
keys(): IterableIterator<number>
|
|
1143
|
+
values(): IterableIterator<number>
|
|
1144
|
+
|
|
1145
|
+
getInternalIndexOfKey(key: number): number | undefined
|
|
1146
|
+
|
|
1147
|
+
has(key: number): boolean
|
|
1148
|
+
get(key: number): number | undefined
|
|
1149
|
+
set(key: number, value: number): void
|
|
1150
|
+
delete(key: number): boolean
|
|
1151
|
+
|
|
1152
|
+
clear(): void
|
|
1153
|
+
}
|
|
1154
|
+
```
|
|
1155
|
+
|
|
1156
|
+
#### ResizableTypedCleanSparseMapLite
|
|
608
1157
|
```ts
|
|
609
|
-
class
|
|
610
|
-
|
|
611
|
-
|
|
1158
|
+
class ResizableTypedCleanSparseMapLite<
|
|
1159
|
+
K extends UnsignedTypedArrayConstructor
|
|
1160
|
+
, V extends TypedArrayConstructor
|
|
1161
|
+
> {
|
|
1162
|
+
get [Symbol.toStringTag](): string
|
|
1163
|
+
get size(): number
|
|
612
1164
|
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
1165
|
+
readonly internalKeyArray: TypedArrayOfConstructor<K>
|
|
1166
|
+
readonly internalValueArray: TypedArrayOfConstructor<V>
|
|
1167
|
+
|
|
1168
|
+
constructor(
|
|
1169
|
+
keys: ResizableTypedArray<K>
|
|
1170
|
+
, values: ResizableTypedArray<V>
|
|
1171
|
+
)
|
|
1172
|
+
|
|
1173
|
+
entries(): IterableIterator<[key: number, value: number]>
|
|
1174
|
+
keys(): IterableIterator<number>
|
|
1175
|
+
values(): IterableIterator<number>
|
|
1176
|
+
|
|
1177
|
+
getInternalIndexOfKey(key: number): number | undefined
|
|
1178
|
+
|
|
1179
|
+
has(key: number): boolean
|
|
1180
|
+
get(key: number): number | undefined
|
|
1181
|
+
set(key: number, value: number): void
|
|
1182
|
+
delete(key: number): boolean
|
|
1183
|
+
|
|
1184
|
+
clear(): void
|
|
616
1185
|
}
|
|
617
1186
|
```
|