max-priority-queue-typed 2.5.0 → 2.5.1
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/dist/cjs/index.cjs +294 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs-legacy/index.cjs +294 -0
- package/dist/cjs-legacy/index.cjs.map +1 -1
- package/dist/esm/index.mjs +294 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm-legacy/index.mjs +294 -0
- package/dist/esm-legacy/index.mjs.map +1 -1
- package/dist/types/data-structures/base/index.d.ts +1 -0
- package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
- package/dist/types/data-structures/base/linear-base.d.ts +3 -3
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +252 -0
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +294 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +527 -2
- package/dist/types/data-structures/binary-tree/bst.d.ts +505 -1
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +399 -0
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +126 -1
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +2881 -382
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2867 -347
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2328 -312
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +2671 -277
- package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
- package/dist/types/data-structures/graph/directed-graph.d.ts +210 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +189 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +241 -10
- package/dist/types/data-structures/heap/heap.d.ts +294 -0
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +360 -3
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +318 -3
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +380 -2
- package/dist/types/data-structures/matrix/matrix.d.ts +168 -0
- package/dist/types/data-structures/queue/deque.d.ts +319 -4
- package/dist/types/data-structures/queue/queue.d.ts +252 -0
- package/dist/types/data-structures/stack/stack.d.ts +210 -0
- package/dist/types/data-structures/trie/trie.d.ts +256 -4
- package/dist/types/interfaces/graph.d.ts +1 -1
- package/dist/types/types/common.d.ts +2 -2
- package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
- package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
- package/dist/types/types/utils/validate-type.d.ts +4 -4
- package/dist/umd/max-priority-queue-typed.js +294 -0
- package/dist/umd/max-priority-queue-typed.js.map +1 -1
- package/dist/umd/max-priority-queue-typed.min.js.map +1 -1
- package/package.json +2 -2
- package/src/data-structures/base/index.ts +1 -0
- package/src/data-structures/base/iterable-entry-base.ts +8 -8
- package/src/data-structures/base/linear-base.ts +3 -3
- package/src/data-structures/binary-tree/avl-tree.ts +252 -0
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +295 -1
- package/src/data-structures/binary-tree/binary-tree.ts +527 -2
- package/src/data-structures/binary-tree/bst.ts +505 -1
- package/src/data-structures/binary-tree/red-black-tree.ts +399 -0
- package/src/data-structures/binary-tree/segment-tree.ts +127 -2
- package/src/data-structures/binary-tree/tree-map.ts +2958 -459
- package/src/data-structures/binary-tree/tree-multi-map.ts +3069 -549
- package/src/data-structures/binary-tree/tree-multi-set.ts +2476 -460
- package/src/data-structures/binary-tree/tree-set.ts +2816 -422
- package/src/data-structures/graph/abstract-graph.ts +4 -4
- package/src/data-structures/graph/directed-graph.ts +210 -0
- package/src/data-structures/graph/undirected-graph.ts +189 -0
- package/src/data-structures/hash/hash-map.ts +246 -15
- package/src/data-structures/heap/heap.ts +294 -0
- package/src/data-structures/linked-list/doubly-linked-list.ts +360 -3
- package/src/data-structures/linked-list/singly-linked-list.ts +318 -3
- package/src/data-structures/linked-list/skip-linked-list.ts +380 -2
- package/src/data-structures/matrix/matrix.ts +169 -1
- package/src/data-structures/queue/deque.ts +320 -5
- package/src/data-structures/queue/queue.ts +252 -0
- package/src/data-structures/stack/stack.ts +210 -0
- package/src/data-structures/trie/trie.ts +257 -5
- package/src/interfaces/graph.ts +1 -1
- package/src/types/common.ts +2 -2
- package/src/types/data-structures/heap/heap.ts +1 -0
- package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
- package/src/types/utils/validate-type.ts +4 -4
|
@@ -68,6 +68,111 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
71
176
|
|
|
72
177
|
|
|
73
178
|
|
|
@@ -135,44 +240,2634 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
135
240
|
|
|
136
241
|
|
|
137
242
|
|
|
138
|
-
* @example
|
|
139
|
-
* // Remove all entries
|
|
140
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
141
|
-
* mm.add(1, 'a');
|
|
142
|
-
* mm.clear();
|
|
143
|
-
* console.log(mm.isEmpty()); // true;
|
|
144
|
-
*/
|
|
145
|
-
clear(): void;
|
|
146
|
-
/**
|
|
147
|
-
* Bucket length for a key (missing => 0).
|
|
148
|
-
* @remarks Time O(log n), Space O(1)
|
|
149
243
|
|
|
150
244
|
|
|
151
|
-
* @example
|
|
152
|
-
* // Count values for key
|
|
153
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
154
|
-
* mm.add(1, 'a');
|
|
155
|
-
* mm.add(1, 'b');
|
|
156
|
-
* console.log(mm.count(1)); // 2;
|
|
157
|
-
*/
|
|
158
|
-
count(key: K): number;
|
|
159
|
-
/**
|
|
160
|
-
* Total number of values across all buckets (Σ bucket.length).
|
|
161
|
-
* @remarks Time O(n), Space O(1)
|
|
162
245
|
|
|
163
246
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
* @example
|
|
349
|
+
* // Remove all entries
|
|
350
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
351
|
+
* mm.add(1, 'a');
|
|
352
|
+
* mm.clear();
|
|
353
|
+
* console.log(mm.isEmpty()); // true;
|
|
354
|
+
*/
|
|
355
|
+
clear(): void;
|
|
356
|
+
/**
|
|
357
|
+
* Bucket length for a key (missing => 0).
|
|
358
|
+
* @remarks Time O(log n), Space O(1)
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
* @example
|
|
383
|
+
* // Count values for key
|
|
384
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
385
|
+
* mm.add(1, 'a');
|
|
386
|
+
* mm.add(1, 'b');
|
|
387
|
+
* console.log(mm.count(1)); // 2;
|
|
388
|
+
*/
|
|
389
|
+
count(key: K): number;
|
|
390
|
+
/**
|
|
391
|
+
* Total number of values across all buckets (Σ bucket.length).
|
|
392
|
+
* @remarks Time O(n), Space O(1)
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
* @example
|
|
417
|
+
* // Total number of values
|
|
418
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
419
|
+
* mm.add(1, 'a');
|
|
420
|
+
* mm.add(1, 'b');
|
|
421
|
+
* mm.add(2, 'c');
|
|
422
|
+
* console.log(mm.totalSize); // 3;
|
|
423
|
+
*/
|
|
424
|
+
get totalSize(): number;
|
|
425
|
+
/**
|
|
426
|
+
* Whether the map contains the given key.
|
|
427
|
+
* @remarks Time O(log n), Space O(1)
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
* @example
|
|
607
|
+
* // Check key existence
|
|
608
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
609
|
+
* mm.add(1, 'a');
|
|
610
|
+
* console.log(mm.has(1)); // true;
|
|
611
|
+
* console.log(mm.has(2)); // false;
|
|
612
|
+
*/
|
|
613
|
+
has(key: K): boolean;
|
|
614
|
+
/**
|
|
615
|
+
* Live bucket reference (do not auto-delete key if bucket becomes empty via mutation).
|
|
616
|
+
* @remarks Time O(log n), Space O(1)
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
* @example
|
|
796
|
+
* // Get values for key
|
|
797
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
798
|
+
* mm.add(1, 'a');
|
|
799
|
+
* mm.add(1, 'b');
|
|
800
|
+
* console.log(mm.get(1)); // ['a', 'b'];
|
|
801
|
+
*/
|
|
802
|
+
get(key: K): V[] | undefined;
|
|
803
|
+
/**
|
|
804
|
+
* Append a single value.
|
|
805
|
+
* @remarks Time O(log n), Space O(1)
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
|
|
870
|
+
|
|
871
|
+
|
|
872
|
+
|
|
873
|
+
|
|
874
|
+
|
|
875
|
+
|
|
876
|
+
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
|
|
885
|
+
|
|
886
|
+
|
|
887
|
+
|
|
888
|
+
|
|
889
|
+
|
|
890
|
+
|
|
891
|
+
|
|
892
|
+
|
|
893
|
+
|
|
894
|
+
|
|
895
|
+
|
|
896
|
+
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
|
|
906
|
+
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
|
|
915
|
+
|
|
916
|
+
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
|
|
920
|
+
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
|
|
926
|
+
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
|
|
930
|
+
|
|
931
|
+
|
|
932
|
+
|
|
933
|
+
|
|
934
|
+
|
|
935
|
+
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
|
|
943
|
+
* @example
|
|
944
|
+
* // Add key-value pair
|
|
945
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
946
|
+
* mm.add(1, 'a');
|
|
947
|
+
* mm.add(1, 'b');
|
|
948
|
+
* mm.add(2, 'c');
|
|
949
|
+
* console.log(mm.get(1)); // ['a', 'b'];
|
|
950
|
+
*/
|
|
951
|
+
add(key: K, value: V): boolean;
|
|
952
|
+
/**
|
|
953
|
+
* Alias for compatibility with existing TreeMultiMap semantics.
|
|
954
|
+
* @remarks Time O(log n), Space O(1) for single value; O(log n + m) for bucket append
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
|
|
963
|
+
|
|
964
|
+
|
|
965
|
+
|
|
966
|
+
|
|
967
|
+
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
|
|
972
|
+
|
|
973
|
+
|
|
974
|
+
|
|
975
|
+
|
|
976
|
+
|
|
977
|
+
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
|
|
981
|
+
|
|
982
|
+
|
|
983
|
+
|
|
984
|
+
|
|
985
|
+
|
|
986
|
+
|
|
987
|
+
|
|
988
|
+
|
|
989
|
+
|
|
990
|
+
|
|
991
|
+
|
|
992
|
+
|
|
993
|
+
|
|
994
|
+
|
|
995
|
+
|
|
996
|
+
|
|
997
|
+
|
|
998
|
+
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
|
|
1002
|
+
|
|
1003
|
+
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
|
|
1007
|
+
|
|
1008
|
+
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
|
|
1012
|
+
|
|
1013
|
+
|
|
1014
|
+
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
|
|
1022
|
+
|
|
1023
|
+
|
|
1024
|
+
|
|
1025
|
+
|
|
1026
|
+
|
|
1027
|
+
|
|
1028
|
+
|
|
1029
|
+
|
|
1030
|
+
|
|
1031
|
+
|
|
1032
|
+
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
|
|
1039
|
+
|
|
1040
|
+
|
|
1041
|
+
|
|
1042
|
+
|
|
1043
|
+
|
|
1044
|
+
|
|
1045
|
+
|
|
1046
|
+
|
|
1047
|
+
|
|
1048
|
+
|
|
1049
|
+
|
|
1050
|
+
|
|
1051
|
+
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
|
|
1058
|
+
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
|
|
1063
|
+
|
|
1064
|
+
|
|
1065
|
+
|
|
1066
|
+
|
|
1067
|
+
|
|
1068
|
+
|
|
1069
|
+
|
|
1070
|
+
|
|
1071
|
+
|
|
1072
|
+
|
|
1073
|
+
|
|
1074
|
+
|
|
1075
|
+
|
|
1076
|
+
|
|
1077
|
+
|
|
1078
|
+
|
|
1079
|
+
|
|
1080
|
+
|
|
1081
|
+
|
|
1082
|
+
|
|
1083
|
+
|
|
1084
|
+
|
|
1085
|
+
|
|
1086
|
+
|
|
1087
|
+
|
|
1088
|
+
|
|
1089
|
+
|
|
1090
|
+
|
|
1091
|
+
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
|
|
1095
|
+
|
|
1096
|
+
|
|
1097
|
+
|
|
1098
|
+
|
|
1099
|
+
|
|
1100
|
+
|
|
1101
|
+
|
|
1102
|
+
|
|
1103
|
+
|
|
1104
|
+
|
|
1105
|
+
|
|
1106
|
+
|
|
1107
|
+
|
|
1108
|
+
|
|
1109
|
+
|
|
1110
|
+
|
|
1111
|
+
|
|
1112
|
+
|
|
1113
|
+
|
|
1114
|
+
|
|
1115
|
+
|
|
1116
|
+
|
|
1117
|
+
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
|
|
1121
|
+
|
|
1122
|
+
|
|
1123
|
+
|
|
1124
|
+
|
|
1125
|
+
|
|
1126
|
+
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
|
|
1130
|
+
|
|
1131
|
+
* @example
|
|
1132
|
+
* // Set values for key
|
|
1133
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1134
|
+
* mm.set(1, 'a');
|
|
1135
|
+
* mm.set(1, 'b');
|
|
1136
|
+
* console.log(mm.get(1)); // ['a', 'b'];
|
|
1137
|
+
*/
|
|
1138
|
+
set(entry: [K | null | undefined, V[] | undefined] | K | null | undefined, value?: V): boolean;
|
|
1139
|
+
set(key: K, value: V): boolean;
|
|
1140
|
+
/**
|
|
1141
|
+
* Deletes a key and its entire bucket.
|
|
1142
|
+
* @remarks Time O(log n), Space O(1)
|
|
1143
|
+
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
|
|
1152
|
+
|
|
1153
|
+
|
|
1154
|
+
|
|
1155
|
+
|
|
1156
|
+
|
|
1157
|
+
|
|
1158
|
+
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
|
|
1162
|
+
|
|
1163
|
+
|
|
1164
|
+
|
|
1165
|
+
|
|
1166
|
+
|
|
1167
|
+
|
|
1168
|
+
|
|
1169
|
+
|
|
1170
|
+
|
|
1171
|
+
|
|
1172
|
+
|
|
1173
|
+
|
|
1174
|
+
|
|
1175
|
+
|
|
1176
|
+
|
|
1177
|
+
|
|
1178
|
+
|
|
1179
|
+
|
|
1180
|
+
|
|
1181
|
+
|
|
1182
|
+
|
|
1183
|
+
|
|
1184
|
+
|
|
1185
|
+
|
|
1186
|
+
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
|
|
1190
|
+
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
|
|
1196
|
+
|
|
1197
|
+
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
|
|
1215
|
+
|
|
1216
|
+
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
|
|
1220
|
+
|
|
1221
|
+
|
|
1222
|
+
|
|
1223
|
+
|
|
1224
|
+
|
|
1225
|
+
|
|
1226
|
+
|
|
1227
|
+
|
|
1228
|
+
|
|
1229
|
+
|
|
1230
|
+
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
|
|
1234
|
+
|
|
1235
|
+
|
|
1236
|
+
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
|
|
1240
|
+
|
|
1241
|
+
|
|
1242
|
+
|
|
1243
|
+
|
|
1244
|
+
|
|
1245
|
+
|
|
1246
|
+
|
|
1247
|
+
|
|
1248
|
+
|
|
1249
|
+
|
|
1250
|
+
|
|
1251
|
+
|
|
1252
|
+
|
|
1253
|
+
|
|
1254
|
+
|
|
1255
|
+
|
|
1256
|
+
|
|
1257
|
+
|
|
1258
|
+
|
|
1259
|
+
|
|
1260
|
+
|
|
1261
|
+
|
|
1262
|
+
|
|
1263
|
+
|
|
1264
|
+
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
|
|
1269
|
+
|
|
1270
|
+
|
|
1271
|
+
|
|
1272
|
+
|
|
1273
|
+
|
|
1274
|
+
|
|
1275
|
+
|
|
1276
|
+
|
|
1277
|
+
|
|
1278
|
+
|
|
1279
|
+
|
|
1280
|
+
|
|
1281
|
+
|
|
1282
|
+
|
|
1283
|
+
|
|
1284
|
+
|
|
1285
|
+
|
|
1286
|
+
|
|
1287
|
+
|
|
1288
|
+
|
|
1289
|
+
|
|
1290
|
+
|
|
1291
|
+
|
|
1292
|
+
|
|
1293
|
+
|
|
1294
|
+
|
|
1295
|
+
|
|
1296
|
+
|
|
1297
|
+
|
|
1298
|
+
|
|
1299
|
+
|
|
1300
|
+
|
|
1301
|
+
|
|
1302
|
+
|
|
1303
|
+
|
|
1304
|
+
|
|
1305
|
+
|
|
1306
|
+
|
|
1307
|
+
|
|
1308
|
+
|
|
1309
|
+
|
|
1310
|
+
|
|
1311
|
+
|
|
1312
|
+
|
|
1313
|
+
|
|
1314
|
+
|
|
1315
|
+
|
|
1316
|
+
|
|
1317
|
+
|
|
1318
|
+
|
|
1319
|
+
|
|
1320
|
+
|
|
1321
|
+
* @example
|
|
1322
|
+
* // Remove key
|
|
1323
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1324
|
+
* mm.add(1, 'a');
|
|
1325
|
+
* mm.add(2, 'b');
|
|
1326
|
+
* mm.delete(1);
|
|
1327
|
+
* console.log(mm.has(1)); // false;
|
|
1328
|
+
*/
|
|
1329
|
+
delete(key: K): boolean;
|
|
1330
|
+
/**
|
|
1331
|
+
* Check if a specific value exists in a key's bucket.
|
|
1332
|
+
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
1333
|
+
|
|
1334
|
+
|
|
1335
|
+
|
|
1336
|
+
|
|
1337
|
+
|
|
1338
|
+
|
|
1339
|
+
|
|
1340
|
+
|
|
1341
|
+
|
|
1342
|
+
|
|
1343
|
+
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
|
|
1351
|
+
|
|
1352
|
+
|
|
1353
|
+
|
|
1354
|
+
|
|
1355
|
+
|
|
1356
|
+
* @example
|
|
1357
|
+
* // Check specific key-value
|
|
1358
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1359
|
+
* mm.add(1, 'a');
|
|
1360
|
+
* console.log(mm.hasEntry(1, 'a')); // true;
|
|
1361
|
+
* console.log(mm.hasEntry(1, 'z')); // false;
|
|
1362
|
+
*/
|
|
1363
|
+
hasEntry(key: K, value: V, eq?: (a: V, b: V) => boolean): boolean;
|
|
1364
|
+
/**
|
|
1365
|
+
* Delete a single occurrence of a value from a key's bucket.
|
|
1366
|
+
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
1367
|
+
|
|
1368
|
+
|
|
1369
|
+
|
|
1370
|
+
|
|
1371
|
+
|
|
1372
|
+
|
|
1373
|
+
|
|
1374
|
+
|
|
1375
|
+
|
|
1376
|
+
|
|
1377
|
+
|
|
1378
|
+
|
|
1379
|
+
|
|
1380
|
+
|
|
1381
|
+
|
|
1382
|
+
|
|
1383
|
+
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
* @example
|
|
1391
|
+
* // Delete specific value
|
|
1392
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1393
|
+
* mm.add(1, 'a');
|
|
1394
|
+
* mm.add(1, 'b');
|
|
1395
|
+
* mm.deleteValue(1, 'a');
|
|
1396
|
+
* console.log(mm.get(1)); // ['b'];
|
|
1397
|
+
*/
|
|
1398
|
+
deleteValue(key: K, value: V, eq?: (a: V, b: V) => boolean): boolean;
|
|
1399
|
+
/**
|
|
1400
|
+
* Delete all occurrences of a value from a key's bucket.
|
|
1401
|
+
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
1402
|
+
|
|
1403
|
+
|
|
1404
|
+
|
|
1405
|
+
|
|
1406
|
+
|
|
1407
|
+
|
|
1408
|
+
|
|
1409
|
+
|
|
1410
|
+
|
|
1411
|
+
|
|
1412
|
+
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
|
|
1419
|
+
|
|
1420
|
+
|
|
1421
|
+
|
|
1422
|
+
|
|
1423
|
+
|
|
1424
|
+
|
|
1425
|
+
* @example
|
|
1426
|
+
* // Delete all matching values
|
|
1427
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1428
|
+
* mm.add(1, 'a');
|
|
1429
|
+
* mm.add(1, 'a');
|
|
1430
|
+
* mm.add(1, 'b');
|
|
1431
|
+
* const count = mm.deleteValues(1, 'a');
|
|
1432
|
+
* console.log(count); // 2;
|
|
1433
|
+
*/
|
|
1434
|
+
deleteValues(key: K, value: V, eq?: (a: V, b: V) => boolean): number;
|
|
1435
|
+
/**
|
|
1436
|
+
* Iterates over all entries as [key, bucket] pairs.
|
|
1437
|
+
* @remarks Time O(n), Space O(1)
|
|
1438
|
+
*/
|
|
1439
|
+
[Symbol.iterator](): Iterator<[K, V[]]>;
|
|
1440
|
+
/**
|
|
1441
|
+
* Iterates over all keys.
|
|
1442
|
+
* @remarks Time O(n), Space O(1)
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
|
|
1446
|
+
|
|
1447
|
+
|
|
1448
|
+
|
|
1449
|
+
|
|
1450
|
+
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
|
|
1454
|
+
|
|
1455
|
+
|
|
1456
|
+
|
|
1457
|
+
|
|
1458
|
+
|
|
1459
|
+
|
|
1460
|
+
|
|
1461
|
+
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
|
|
1471
|
+
|
|
1472
|
+
|
|
1473
|
+
|
|
1474
|
+
|
|
1475
|
+
|
|
1476
|
+
|
|
1477
|
+
|
|
1478
|
+
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
|
|
1482
|
+
|
|
1483
|
+
|
|
1484
|
+
|
|
1485
|
+
|
|
1486
|
+
|
|
1487
|
+
|
|
1488
|
+
|
|
1489
|
+
|
|
1490
|
+
|
|
1491
|
+
|
|
1492
|
+
|
|
1493
|
+
|
|
1494
|
+
|
|
1495
|
+
|
|
1496
|
+
|
|
1497
|
+
|
|
1498
|
+
|
|
1499
|
+
|
|
1500
|
+
|
|
1501
|
+
|
|
1502
|
+
|
|
1503
|
+
|
|
1504
|
+
|
|
1505
|
+
|
|
1506
|
+
|
|
1507
|
+
|
|
1508
|
+
|
|
1509
|
+
|
|
1510
|
+
|
|
1511
|
+
|
|
1512
|
+
|
|
1513
|
+
|
|
1514
|
+
|
|
1515
|
+
|
|
1516
|
+
|
|
1517
|
+
|
|
1518
|
+
|
|
1519
|
+
|
|
1520
|
+
|
|
1521
|
+
|
|
1522
|
+
|
|
1523
|
+
|
|
1524
|
+
|
|
1525
|
+
|
|
1526
|
+
|
|
1527
|
+
|
|
1528
|
+
|
|
1529
|
+
|
|
1530
|
+
|
|
1531
|
+
|
|
1532
|
+
|
|
1533
|
+
|
|
1534
|
+
|
|
1535
|
+
|
|
1536
|
+
|
|
1537
|
+
|
|
1538
|
+
|
|
1539
|
+
|
|
1540
|
+
|
|
1541
|
+
|
|
1542
|
+
|
|
1543
|
+
|
|
1544
|
+
|
|
1545
|
+
|
|
1546
|
+
|
|
1547
|
+
|
|
1548
|
+
|
|
1549
|
+
|
|
1550
|
+
|
|
1551
|
+
|
|
1552
|
+
|
|
1553
|
+
|
|
1554
|
+
|
|
1555
|
+
|
|
1556
|
+
|
|
1557
|
+
|
|
1558
|
+
|
|
1559
|
+
|
|
1560
|
+
|
|
1561
|
+
|
|
1562
|
+
|
|
1563
|
+
|
|
1564
|
+
|
|
1565
|
+
|
|
1566
|
+
|
|
1567
|
+
|
|
1568
|
+
|
|
1569
|
+
|
|
1570
|
+
|
|
1571
|
+
|
|
1572
|
+
|
|
1573
|
+
|
|
1574
|
+
|
|
1575
|
+
|
|
1576
|
+
|
|
1577
|
+
|
|
1578
|
+
|
|
1579
|
+
|
|
1580
|
+
|
|
1581
|
+
|
|
1582
|
+
|
|
1583
|
+
|
|
1584
|
+
|
|
1585
|
+
|
|
1586
|
+
* @example
|
|
1587
|
+
* // Iterate keys
|
|
1588
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1589
|
+
* mm.add(3, 'c');
|
|
1590
|
+
* mm.add(1, 'a');
|
|
1591
|
+
* console.log([...mm.keys()]); // [1, 3];
|
|
1592
|
+
*/
|
|
1593
|
+
keys(): IterableIterator<K>;
|
|
1594
|
+
/**
|
|
1595
|
+
* Iterates over all buckets.
|
|
1596
|
+
* @remarks Time O(n), Space O(1)
|
|
1597
|
+
|
|
1598
|
+
|
|
1599
|
+
|
|
1600
|
+
|
|
1601
|
+
|
|
1602
|
+
|
|
1603
|
+
|
|
1604
|
+
|
|
1605
|
+
|
|
1606
|
+
|
|
1607
|
+
|
|
1608
|
+
|
|
1609
|
+
|
|
1610
|
+
|
|
1611
|
+
|
|
1612
|
+
|
|
1613
|
+
|
|
1614
|
+
|
|
1615
|
+
|
|
1616
|
+
|
|
1617
|
+
|
|
1618
|
+
|
|
1619
|
+
|
|
1620
|
+
|
|
1621
|
+
|
|
1622
|
+
|
|
1623
|
+
|
|
1624
|
+
|
|
1625
|
+
|
|
1626
|
+
|
|
1627
|
+
|
|
1628
|
+
|
|
1629
|
+
|
|
1630
|
+
|
|
1631
|
+
|
|
1632
|
+
|
|
1633
|
+
|
|
1634
|
+
|
|
1635
|
+
|
|
1636
|
+
|
|
1637
|
+
|
|
1638
|
+
|
|
1639
|
+
|
|
1640
|
+
|
|
1641
|
+
|
|
1642
|
+
|
|
1643
|
+
|
|
1644
|
+
|
|
1645
|
+
|
|
1646
|
+
|
|
1647
|
+
|
|
1648
|
+
|
|
1649
|
+
|
|
1650
|
+
|
|
1651
|
+
|
|
1652
|
+
|
|
1653
|
+
|
|
1654
|
+
|
|
1655
|
+
|
|
1656
|
+
|
|
1657
|
+
|
|
1658
|
+
|
|
1659
|
+
|
|
1660
|
+
|
|
1661
|
+
|
|
1662
|
+
|
|
1663
|
+
|
|
1664
|
+
|
|
1665
|
+
|
|
1666
|
+
|
|
1667
|
+
|
|
1668
|
+
|
|
1669
|
+
|
|
1670
|
+
|
|
1671
|
+
|
|
1672
|
+
|
|
1673
|
+
|
|
1674
|
+
|
|
1675
|
+
|
|
1676
|
+
|
|
1677
|
+
|
|
1678
|
+
|
|
1679
|
+
|
|
1680
|
+
|
|
1681
|
+
|
|
1682
|
+
|
|
1683
|
+
|
|
1684
|
+
|
|
1685
|
+
|
|
1686
|
+
|
|
1687
|
+
|
|
1688
|
+
|
|
1689
|
+
|
|
1690
|
+
|
|
1691
|
+
|
|
1692
|
+
|
|
1693
|
+
|
|
1694
|
+
|
|
1695
|
+
|
|
1696
|
+
|
|
1697
|
+
|
|
1698
|
+
|
|
1699
|
+
|
|
1700
|
+
|
|
1701
|
+
|
|
1702
|
+
|
|
1703
|
+
|
|
1704
|
+
|
|
1705
|
+
|
|
1706
|
+
|
|
1707
|
+
|
|
1708
|
+
|
|
1709
|
+
|
|
1710
|
+
|
|
1711
|
+
|
|
1712
|
+
|
|
1713
|
+
|
|
1714
|
+
|
|
1715
|
+
|
|
1716
|
+
|
|
1717
|
+
|
|
1718
|
+
|
|
1719
|
+
|
|
1720
|
+
|
|
1721
|
+
|
|
1722
|
+
|
|
1723
|
+
|
|
1724
|
+
|
|
1725
|
+
|
|
1726
|
+
|
|
1727
|
+
|
|
1728
|
+
|
|
1729
|
+
|
|
1730
|
+
|
|
1731
|
+
|
|
1732
|
+
|
|
1733
|
+
|
|
1734
|
+
|
|
1735
|
+
|
|
1736
|
+
|
|
1737
|
+
|
|
1738
|
+
|
|
1739
|
+
|
|
1740
|
+
* @example
|
|
1741
|
+
* // Iterate value arrays
|
|
1742
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1743
|
+
* mm.add(1, 'a');
|
|
1744
|
+
* mm.add(1, 'b');
|
|
1745
|
+
* console.log([...mm.values()]); // [['a', 'b']];
|
|
1746
|
+
*/
|
|
1747
|
+
values(): IterableIterator<V[]>;
|
|
1748
|
+
/**
|
|
1749
|
+
* Iterates over all entries for a specific key.
|
|
1750
|
+
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
1751
|
+
|
|
1752
|
+
|
|
1753
|
+
|
|
1754
|
+
|
|
1755
|
+
|
|
1756
|
+
|
|
1757
|
+
|
|
1758
|
+
|
|
1759
|
+
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
|
|
1763
|
+
|
|
1764
|
+
|
|
1765
|
+
|
|
1766
|
+
|
|
1767
|
+
|
|
1768
|
+
|
|
1769
|
+
|
|
1770
|
+
|
|
1771
|
+
|
|
1772
|
+
|
|
1773
|
+
|
|
1774
|
+
* @example
|
|
1775
|
+
* // Get entries for key
|
|
1776
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1777
|
+
* mm.add(1, 'a');
|
|
1778
|
+
* mm.add(1, 'b');
|
|
1779
|
+
* console.log([...mm.entriesOf(1)]); // [[1, 'a'], [1, 'b']];
|
|
1780
|
+
*/
|
|
1781
|
+
entriesOf(key: K): IterableIterator<[K, V]>;
|
|
1782
|
+
/**
|
|
1783
|
+
* Iterates over all values for a specific key.
|
|
1784
|
+
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
1785
|
+
|
|
1786
|
+
|
|
1787
|
+
|
|
1788
|
+
|
|
1789
|
+
|
|
1790
|
+
|
|
1791
|
+
|
|
1792
|
+
|
|
1793
|
+
|
|
1794
|
+
|
|
1795
|
+
|
|
1796
|
+
|
|
1797
|
+
|
|
1798
|
+
|
|
1799
|
+
|
|
1800
|
+
|
|
1801
|
+
|
|
1802
|
+
|
|
1803
|
+
|
|
1804
|
+
|
|
1805
|
+
|
|
1806
|
+
|
|
1807
|
+
|
|
1808
|
+
* @example
|
|
1809
|
+
* // Get flat values for key
|
|
1810
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1811
|
+
* mm.add(1, 'a');
|
|
1812
|
+
* mm.add(1, 'b');
|
|
1813
|
+
* console.log([...mm.valuesOf(1)]); // ['a', 'b'];
|
|
1814
|
+
*/
|
|
1815
|
+
valuesOf(key: K): IterableIterator<V>;
|
|
1816
|
+
/**
|
|
1817
|
+
* Iterates over all [key, value] pairs (flattened from buckets).
|
|
1818
|
+
* @remarks Time O(T), Space O(1) where T is totalSize
|
|
1819
|
+
|
|
1820
|
+
|
|
1821
|
+
|
|
1822
|
+
|
|
1823
|
+
|
|
1824
|
+
|
|
1825
|
+
|
|
1826
|
+
|
|
1827
|
+
|
|
1828
|
+
|
|
1829
|
+
|
|
1830
|
+
|
|
1831
|
+
|
|
1832
|
+
|
|
1833
|
+
|
|
1834
|
+
|
|
1835
|
+
|
|
1836
|
+
|
|
1837
|
+
|
|
1838
|
+
|
|
1839
|
+
|
|
1840
|
+
|
|
1841
|
+
|
|
1842
|
+
* @example
|
|
1843
|
+
* // All key-value pairs flattened
|
|
1844
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1845
|
+
* mm.add(1, 'a');
|
|
1846
|
+
* mm.add(1, 'b');
|
|
1847
|
+
* mm.add(2, 'c');
|
|
1848
|
+
* console.log([...mm.flatEntries()]); // [[1, 'a'], [1, 'b'], [2, 'c']];
|
|
1849
|
+
*/
|
|
1850
|
+
flatEntries(): IterableIterator<[K, V]>;
|
|
1851
|
+
/**
|
|
1852
|
+
* Returns the entry with the smallest key.
|
|
1853
|
+
* @remarks Time O(log n), Space O(1)
|
|
1854
|
+
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
|
|
1861
|
+
|
|
1862
|
+
|
|
1863
|
+
|
|
1864
|
+
|
|
1865
|
+
|
|
1866
|
+
|
|
1867
|
+
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
|
|
1873
|
+
|
|
1874
|
+
|
|
1875
|
+
|
|
1876
|
+
|
|
1877
|
+
|
|
1878
|
+
|
|
1879
|
+
|
|
1880
|
+
|
|
1881
|
+
|
|
1882
|
+
|
|
1883
|
+
|
|
1884
|
+
|
|
1885
|
+
|
|
1886
|
+
|
|
1887
|
+
|
|
1888
|
+
|
|
1889
|
+
|
|
1890
|
+
|
|
1891
|
+
|
|
1892
|
+
|
|
1893
|
+
|
|
1894
|
+
|
|
1895
|
+
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
|
|
1902
|
+
|
|
1903
|
+
|
|
1904
|
+
|
|
1905
|
+
|
|
1906
|
+
|
|
1907
|
+
|
|
1908
|
+
|
|
1909
|
+
|
|
1910
|
+
* @example
|
|
1911
|
+
* // First entry
|
|
1912
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1913
|
+
* mm.add(3, 'c');
|
|
1914
|
+
* mm.add(1, 'a');
|
|
1915
|
+
* console.log(mm.first()?.[0]); // 1;
|
|
1916
|
+
*/
|
|
1917
|
+
first(): [K, V[]] | undefined;
|
|
1918
|
+
/**
|
|
1919
|
+
* Returns the entry with the largest key.
|
|
1920
|
+
* @remarks Time O(log n), Space O(1)
|
|
1921
|
+
|
|
1922
|
+
|
|
1923
|
+
|
|
1924
|
+
|
|
1925
|
+
|
|
1926
|
+
|
|
1927
|
+
|
|
1928
|
+
|
|
1929
|
+
|
|
1930
|
+
|
|
1931
|
+
|
|
1932
|
+
|
|
1933
|
+
|
|
1934
|
+
|
|
1935
|
+
|
|
1936
|
+
|
|
1937
|
+
|
|
1938
|
+
|
|
1939
|
+
|
|
1940
|
+
|
|
1941
|
+
|
|
1942
|
+
|
|
1943
|
+
|
|
1944
|
+
|
|
1945
|
+
|
|
1946
|
+
|
|
1947
|
+
|
|
1948
|
+
|
|
1949
|
+
|
|
1950
|
+
|
|
1951
|
+
|
|
1952
|
+
|
|
1953
|
+
|
|
1954
|
+
|
|
1955
|
+
|
|
1956
|
+
|
|
1957
|
+
|
|
1958
|
+
|
|
1959
|
+
|
|
1960
|
+
|
|
1961
|
+
|
|
1962
|
+
|
|
1963
|
+
|
|
1964
|
+
|
|
1965
|
+
|
|
1966
|
+
|
|
1967
|
+
|
|
1968
|
+
|
|
1969
|
+
|
|
1970
|
+
|
|
1971
|
+
|
|
1972
|
+
|
|
1973
|
+
|
|
1974
|
+
|
|
1975
|
+
|
|
1976
|
+
|
|
1977
|
+
* @example
|
|
1978
|
+
* // Last entry
|
|
1979
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
1980
|
+
* mm.add(1, 'a');
|
|
1981
|
+
* mm.add(3, 'c');
|
|
1982
|
+
* console.log(mm.last()?.[0]); // 3;
|
|
1983
|
+
*/
|
|
1984
|
+
last(): [K, V[]] | undefined;
|
|
1985
|
+
/**
|
|
1986
|
+
* Removes and returns the entry with the smallest key.
|
|
1987
|
+
* @remarks Time O(log n), Space O(1)
|
|
1988
|
+
|
|
1989
|
+
|
|
1990
|
+
|
|
1991
|
+
|
|
1992
|
+
|
|
1993
|
+
|
|
1994
|
+
|
|
1995
|
+
|
|
1996
|
+
|
|
1997
|
+
|
|
1998
|
+
|
|
1999
|
+
|
|
2000
|
+
|
|
2001
|
+
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
|
|
2005
|
+
|
|
2006
|
+
|
|
2007
|
+
|
|
2008
|
+
|
|
2009
|
+
|
|
2010
|
+
|
|
2011
|
+
|
|
2012
|
+
* @example
|
|
2013
|
+
* // Remove and return first
|
|
2014
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2015
|
+
* mm.add(2, 'b');
|
|
2016
|
+
* mm.add(1, 'a');
|
|
2017
|
+
* const first = mm.pollFirst();
|
|
2018
|
+
* console.log(first?.[0]); // 1;
|
|
2019
|
+
* console.log(mm.has(1)); // false;
|
|
2020
|
+
*/
|
|
2021
|
+
pollFirst(): [K, V[]] | undefined;
|
|
2022
|
+
/**
|
|
2023
|
+
* Removes and returns the entry with the largest key.
|
|
2024
|
+
* @remarks Time O(log n), Space O(1)
|
|
2025
|
+
|
|
2026
|
+
|
|
2027
|
+
|
|
2028
|
+
|
|
2029
|
+
|
|
2030
|
+
|
|
2031
|
+
|
|
2032
|
+
|
|
2033
|
+
|
|
2034
|
+
|
|
2035
|
+
|
|
2036
|
+
|
|
2037
|
+
|
|
2038
|
+
|
|
2039
|
+
|
|
2040
|
+
|
|
2041
|
+
|
|
2042
|
+
|
|
2043
|
+
|
|
2044
|
+
|
|
2045
|
+
|
|
2046
|
+
|
|
2047
|
+
|
|
2048
|
+
|
|
2049
|
+
* @example
|
|
2050
|
+
* // Remove and return last
|
|
2051
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2052
|
+
* mm.add(1, 'a');
|
|
2053
|
+
* mm.add(3, 'c');
|
|
2054
|
+
* const last = mm.pollLast();
|
|
2055
|
+
* console.log(last?.[0]); // 3;
|
|
2056
|
+
*/
|
|
2057
|
+
pollLast(): [K, V[]] | undefined;
|
|
2058
|
+
/**
|
|
2059
|
+
* Returns the entry with the smallest key >= given key.
|
|
2060
|
+
* @remarks Time O(log n), Space O(1)
|
|
2061
|
+
|
|
2062
|
+
|
|
2063
|
+
|
|
2064
|
+
|
|
2065
|
+
|
|
2066
|
+
|
|
2067
|
+
|
|
2068
|
+
|
|
2069
|
+
|
|
2070
|
+
|
|
2071
|
+
|
|
2072
|
+
|
|
2073
|
+
|
|
2074
|
+
|
|
2075
|
+
|
|
2076
|
+
|
|
2077
|
+
|
|
2078
|
+
|
|
2079
|
+
|
|
2080
|
+
|
|
2081
|
+
|
|
2082
|
+
|
|
2083
|
+
|
|
2084
|
+
|
|
2085
|
+
|
|
2086
|
+
|
|
2087
|
+
|
|
2088
|
+
|
|
2089
|
+
|
|
2090
|
+
|
|
2091
|
+
|
|
2092
|
+
|
|
2093
|
+
|
|
2094
|
+
|
|
2095
|
+
|
|
2096
|
+
|
|
2097
|
+
|
|
2098
|
+
|
|
2099
|
+
|
|
2100
|
+
|
|
2101
|
+
|
|
2102
|
+
|
|
2103
|
+
|
|
2104
|
+
|
|
2105
|
+
|
|
2106
|
+
|
|
2107
|
+
|
|
2108
|
+
|
|
2109
|
+
|
|
2110
|
+
|
|
2111
|
+
|
|
2112
|
+
|
|
2113
|
+
|
|
2114
|
+
|
|
2115
|
+
|
|
2116
|
+
|
|
2117
|
+
|
|
2118
|
+
|
|
2119
|
+
|
|
2120
|
+
|
|
2121
|
+
|
|
2122
|
+
|
|
2123
|
+
|
|
2124
|
+
|
|
2125
|
+
|
|
2126
|
+
|
|
2127
|
+
|
|
2128
|
+
|
|
2129
|
+
|
|
2130
|
+
|
|
2131
|
+
|
|
2132
|
+
|
|
2133
|
+
|
|
2134
|
+
|
|
2135
|
+
|
|
2136
|
+
|
|
2137
|
+
|
|
2138
|
+
|
|
2139
|
+
|
|
2140
|
+
|
|
2141
|
+
|
|
2142
|
+
|
|
2143
|
+
|
|
2144
|
+
|
|
2145
|
+
|
|
2146
|
+
|
|
2147
|
+
|
|
2148
|
+
|
|
2149
|
+
|
|
2150
|
+
|
|
2151
|
+
|
|
2152
|
+
|
|
2153
|
+
|
|
2154
|
+
|
|
2155
|
+
|
|
2156
|
+
|
|
2157
|
+
|
|
2158
|
+
|
|
2159
|
+
|
|
2160
|
+
|
|
2161
|
+
|
|
2162
|
+
|
|
2163
|
+
|
|
2164
|
+
|
|
2165
|
+
|
|
2166
|
+
|
|
2167
|
+
|
|
2168
|
+
|
|
2169
|
+
|
|
2170
|
+
|
|
2171
|
+
|
|
2172
|
+
|
|
2173
|
+
|
|
2174
|
+
|
|
2175
|
+
|
|
2176
|
+
|
|
2177
|
+
|
|
2178
|
+
|
|
2179
|
+
|
|
2180
|
+
|
|
2181
|
+
|
|
2182
|
+
|
|
2183
|
+
|
|
2184
|
+
|
|
2185
|
+
|
|
2186
|
+
|
|
2187
|
+
|
|
2188
|
+
|
|
2189
|
+
|
|
2190
|
+
|
|
2191
|
+
|
|
2192
|
+
|
|
2193
|
+
|
|
2194
|
+
|
|
2195
|
+
|
|
2196
|
+
|
|
2197
|
+
|
|
2198
|
+
|
|
2199
|
+
|
|
2200
|
+
|
|
2201
|
+
|
|
2202
|
+
|
|
2203
|
+
|
|
2204
|
+
|
|
2205
|
+
|
|
2206
|
+
|
|
2207
|
+
* @example
|
|
2208
|
+
* // Least key ≥ target
|
|
2209
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2210
|
+
* mm.add(10, 'a');
|
|
2211
|
+
* mm.add(20, 'b');
|
|
2212
|
+
* mm.add(30, 'c');
|
|
2213
|
+
* console.log(mm.ceiling(15)?.[0]); // 20;
|
|
2214
|
+
*/
|
|
2215
|
+
ceiling(key: K): [K, V[]] | undefined;
|
|
2216
|
+
/**
|
|
2217
|
+
* Returns the entry with the largest key <= given key.
|
|
2218
|
+
* @remarks Time O(log n), Space O(1)
|
|
2219
|
+
|
|
2220
|
+
|
|
2221
|
+
|
|
2222
|
+
|
|
2223
|
+
|
|
2224
|
+
|
|
2225
|
+
|
|
2226
|
+
|
|
2227
|
+
|
|
2228
|
+
|
|
2229
|
+
|
|
2230
|
+
|
|
2231
|
+
|
|
2232
|
+
|
|
2233
|
+
|
|
2234
|
+
|
|
2235
|
+
|
|
2236
|
+
|
|
2237
|
+
|
|
2238
|
+
|
|
2239
|
+
|
|
2240
|
+
|
|
2241
|
+
|
|
2242
|
+
|
|
2243
|
+
|
|
2244
|
+
|
|
2245
|
+
|
|
2246
|
+
|
|
2247
|
+
|
|
2248
|
+
|
|
2249
|
+
|
|
2250
|
+
|
|
2251
|
+
|
|
2252
|
+
|
|
2253
|
+
|
|
2254
|
+
|
|
2255
|
+
|
|
2256
|
+
|
|
2257
|
+
|
|
2258
|
+
|
|
2259
|
+
|
|
2260
|
+
|
|
2261
|
+
|
|
2262
|
+
|
|
2263
|
+
|
|
2264
|
+
|
|
2265
|
+
|
|
2266
|
+
|
|
2267
|
+
|
|
2268
|
+
|
|
2269
|
+
|
|
2270
|
+
|
|
2271
|
+
|
|
2272
|
+
|
|
2273
|
+
|
|
2274
|
+
|
|
2275
|
+
|
|
2276
|
+
|
|
2277
|
+
|
|
2278
|
+
|
|
2279
|
+
|
|
2280
|
+
|
|
2281
|
+
|
|
2282
|
+
|
|
2283
|
+
|
|
2284
|
+
|
|
2285
|
+
|
|
2286
|
+
|
|
2287
|
+
|
|
2288
|
+
|
|
2289
|
+
|
|
2290
|
+
|
|
2291
|
+
|
|
2292
|
+
|
|
2293
|
+
|
|
2294
|
+
|
|
2295
|
+
|
|
2296
|
+
|
|
2297
|
+
|
|
2298
|
+
|
|
2299
|
+
|
|
2300
|
+
|
|
2301
|
+
|
|
2302
|
+
|
|
2303
|
+
|
|
2304
|
+
|
|
2305
|
+
|
|
2306
|
+
|
|
2307
|
+
|
|
2308
|
+
|
|
2309
|
+
|
|
2310
|
+
|
|
2311
|
+
|
|
2312
|
+
|
|
2313
|
+
|
|
2314
|
+
|
|
2315
|
+
|
|
2316
|
+
|
|
2317
|
+
|
|
2318
|
+
|
|
2319
|
+
|
|
2320
|
+
|
|
2321
|
+
|
|
2322
|
+
|
|
2323
|
+
|
|
2324
|
+
|
|
2325
|
+
|
|
2326
|
+
|
|
2327
|
+
|
|
2328
|
+
|
|
2329
|
+
|
|
2330
|
+
|
|
2331
|
+
|
|
2332
|
+
|
|
2333
|
+
|
|
2334
|
+
|
|
2335
|
+
|
|
2336
|
+
|
|
2337
|
+
|
|
2338
|
+
|
|
2339
|
+
|
|
2340
|
+
|
|
2341
|
+
|
|
2342
|
+
|
|
2343
|
+
|
|
2344
|
+
|
|
2345
|
+
|
|
2346
|
+
|
|
2347
|
+
|
|
2348
|
+
|
|
2349
|
+
|
|
2350
|
+
|
|
2351
|
+
|
|
2352
|
+
|
|
2353
|
+
|
|
2354
|
+
|
|
2355
|
+
|
|
2356
|
+
|
|
2357
|
+
|
|
2358
|
+
|
|
2359
|
+
|
|
2360
|
+
|
|
2361
|
+
|
|
2362
|
+
|
|
2363
|
+
|
|
2364
|
+
|
|
2365
|
+
* @example
|
|
2366
|
+
* // Greatest key ≤ target
|
|
2367
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2368
|
+
* mm.add(10, 'a');
|
|
2369
|
+
* mm.add(20, 'b');
|
|
2370
|
+
* mm.add(30, 'c');
|
|
2371
|
+
* console.log(mm.floor(25)?.[0]); // 20;
|
|
2372
|
+
*/
|
|
2373
|
+
floor(key: K): [K, V[]] | undefined;
|
|
2374
|
+
/**
|
|
2375
|
+
* Returns the entry with the smallest key > given key.
|
|
2376
|
+
* @remarks Time O(log n), Space O(1)
|
|
2377
|
+
|
|
2378
|
+
|
|
2379
|
+
|
|
2380
|
+
|
|
2381
|
+
|
|
2382
|
+
|
|
2383
|
+
|
|
2384
|
+
|
|
2385
|
+
|
|
2386
|
+
|
|
2387
|
+
|
|
2388
|
+
|
|
2389
|
+
|
|
2390
|
+
|
|
2391
|
+
|
|
2392
|
+
|
|
2393
|
+
|
|
2394
|
+
|
|
2395
|
+
|
|
2396
|
+
|
|
2397
|
+
|
|
2398
|
+
|
|
2399
|
+
|
|
2400
|
+
|
|
2401
|
+
|
|
2402
|
+
|
|
2403
|
+
|
|
2404
|
+
|
|
2405
|
+
|
|
2406
|
+
|
|
2407
|
+
|
|
2408
|
+
|
|
2409
|
+
|
|
2410
|
+
|
|
2411
|
+
|
|
2412
|
+
|
|
2413
|
+
|
|
2414
|
+
|
|
2415
|
+
|
|
2416
|
+
|
|
2417
|
+
|
|
2418
|
+
|
|
2419
|
+
|
|
2420
|
+
|
|
2421
|
+
|
|
2422
|
+
|
|
2423
|
+
|
|
2424
|
+
|
|
2425
|
+
|
|
2426
|
+
|
|
2427
|
+
|
|
2428
|
+
|
|
2429
|
+
|
|
2430
|
+
|
|
2431
|
+
|
|
2432
|
+
|
|
2433
|
+
|
|
2434
|
+
|
|
2435
|
+
|
|
2436
|
+
|
|
2437
|
+
|
|
2438
|
+
|
|
2439
|
+
|
|
2440
|
+
|
|
2441
|
+
|
|
2442
|
+
|
|
2443
|
+
|
|
2444
|
+
|
|
2445
|
+
|
|
2446
|
+
|
|
2447
|
+
|
|
2448
|
+
|
|
2449
|
+
|
|
2450
|
+
|
|
2451
|
+
|
|
2452
|
+
|
|
2453
|
+
|
|
2454
|
+
|
|
2455
|
+
|
|
2456
|
+
|
|
2457
|
+
|
|
2458
|
+
|
|
2459
|
+
|
|
2460
|
+
|
|
2461
|
+
|
|
2462
|
+
|
|
2463
|
+
|
|
2464
|
+
|
|
2465
|
+
|
|
2466
|
+
|
|
2467
|
+
|
|
2468
|
+
|
|
2469
|
+
|
|
2470
|
+
|
|
2471
|
+
|
|
2472
|
+
|
|
2473
|
+
|
|
2474
|
+
|
|
2475
|
+
|
|
2476
|
+
|
|
2477
|
+
|
|
2478
|
+
|
|
2479
|
+
|
|
2480
|
+
|
|
2481
|
+
|
|
2482
|
+
|
|
2483
|
+
|
|
2484
|
+
|
|
2485
|
+
|
|
2486
|
+
|
|
2487
|
+
|
|
2488
|
+
|
|
2489
|
+
|
|
2490
|
+
|
|
2491
|
+
* @example
|
|
2492
|
+
* // Least key > target
|
|
2493
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2494
|
+
* mm.add(10, 'a');
|
|
2495
|
+
* mm.add(20, 'b');
|
|
2496
|
+
* console.log(mm.higher(10)?.[0]); // 20;
|
|
2497
|
+
*/
|
|
2498
|
+
higher(key: K): [K, V[]] | undefined;
|
|
2499
|
+
/**
|
|
2500
|
+
* Returns the entry with the largest key < given key.
|
|
2501
|
+
* @remarks Time O(log n), Space O(1)
|
|
2502
|
+
|
|
2503
|
+
|
|
2504
|
+
|
|
2505
|
+
|
|
2506
|
+
|
|
2507
|
+
|
|
2508
|
+
|
|
2509
|
+
|
|
2510
|
+
|
|
2511
|
+
|
|
2512
|
+
|
|
2513
|
+
|
|
2514
|
+
|
|
2515
|
+
|
|
2516
|
+
|
|
2517
|
+
|
|
2518
|
+
|
|
2519
|
+
|
|
2520
|
+
|
|
2521
|
+
|
|
2522
|
+
|
|
2523
|
+
|
|
2524
|
+
|
|
2525
|
+
|
|
2526
|
+
|
|
2527
|
+
|
|
2528
|
+
|
|
2529
|
+
|
|
2530
|
+
|
|
2531
|
+
|
|
2532
|
+
|
|
2533
|
+
|
|
2534
|
+
|
|
2535
|
+
|
|
2536
|
+
|
|
2537
|
+
|
|
2538
|
+
|
|
2539
|
+
|
|
2540
|
+
|
|
2541
|
+
|
|
2542
|
+
|
|
2543
|
+
|
|
2544
|
+
|
|
2545
|
+
|
|
2546
|
+
|
|
2547
|
+
|
|
2548
|
+
|
|
2549
|
+
|
|
2550
|
+
|
|
2551
|
+
|
|
2552
|
+
|
|
2553
|
+
|
|
2554
|
+
|
|
2555
|
+
|
|
2556
|
+
|
|
2557
|
+
|
|
2558
|
+
|
|
2559
|
+
|
|
2560
|
+
|
|
2561
|
+
|
|
2562
|
+
|
|
2563
|
+
|
|
2564
|
+
|
|
2565
|
+
|
|
2566
|
+
|
|
2567
|
+
|
|
2568
|
+
|
|
2569
|
+
|
|
2570
|
+
|
|
2571
|
+
|
|
2572
|
+
|
|
2573
|
+
|
|
2574
|
+
|
|
2575
|
+
|
|
2576
|
+
|
|
2577
|
+
|
|
2578
|
+
|
|
2579
|
+
|
|
2580
|
+
|
|
2581
|
+
|
|
2582
|
+
|
|
2583
|
+
|
|
2584
|
+
|
|
2585
|
+
|
|
2586
|
+
|
|
2587
|
+
|
|
2588
|
+
|
|
2589
|
+
|
|
2590
|
+
|
|
2591
|
+
|
|
2592
|
+
|
|
2593
|
+
|
|
2594
|
+
|
|
2595
|
+
|
|
2596
|
+
|
|
2597
|
+
|
|
2598
|
+
|
|
2599
|
+
|
|
2600
|
+
|
|
2601
|
+
|
|
2602
|
+
|
|
2603
|
+
|
|
2604
|
+
|
|
2605
|
+
|
|
2606
|
+
|
|
2607
|
+
|
|
2608
|
+
|
|
2609
|
+
|
|
2610
|
+
|
|
2611
|
+
|
|
2612
|
+
|
|
2613
|
+
|
|
2614
|
+
|
|
2615
|
+
|
|
2616
|
+
* @example
|
|
2617
|
+
* // Greatest key < target
|
|
2618
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2619
|
+
* mm.add(10, 'a');
|
|
2620
|
+
* mm.add(20, 'b');
|
|
2621
|
+
* console.log(mm.lower(20)?.[0]); // 10;
|
|
2622
|
+
*/
|
|
2623
|
+
lower(key: K): [K, V[]] | undefined;
|
|
2624
|
+
/**
|
|
2625
|
+
* Prints the internal tree structure (for debugging).
|
|
2626
|
+
* @remarks Time O(n), Space O(n)
|
|
2627
|
+
|
|
2628
|
+
|
|
2629
|
+
|
|
2630
|
+
|
|
2631
|
+
|
|
2632
|
+
|
|
2633
|
+
|
|
2634
|
+
|
|
2635
|
+
|
|
2636
|
+
|
|
2637
|
+
|
|
2638
|
+
|
|
2639
|
+
|
|
2640
|
+
|
|
2641
|
+
|
|
2642
|
+
|
|
2643
|
+
|
|
2644
|
+
|
|
2645
|
+
|
|
2646
|
+
|
|
2647
|
+
|
|
2648
|
+
|
|
2649
|
+
|
|
2650
|
+
|
|
2651
|
+
|
|
2652
|
+
|
|
2653
|
+
|
|
2654
|
+
|
|
2655
|
+
|
|
2656
|
+
|
|
2657
|
+
|
|
2658
|
+
|
|
2659
|
+
|
|
2660
|
+
|
|
2661
|
+
|
|
2662
|
+
|
|
2663
|
+
|
|
2664
|
+
|
|
2665
|
+
|
|
2666
|
+
|
|
2667
|
+
|
|
2668
|
+
|
|
2669
|
+
|
|
2670
|
+
|
|
2671
|
+
|
|
2672
|
+
|
|
2673
|
+
|
|
2674
|
+
|
|
2675
|
+
|
|
2676
|
+
|
|
2677
|
+
|
|
2678
|
+
|
|
2679
|
+
|
|
2680
|
+
|
|
2681
|
+
|
|
2682
|
+
|
|
2683
|
+
|
|
2684
|
+
|
|
2685
|
+
|
|
2686
|
+
|
|
2687
|
+
|
|
2688
|
+
|
|
2689
|
+
|
|
2690
|
+
|
|
2691
|
+
|
|
2692
|
+
|
|
2693
|
+
|
|
2694
|
+
|
|
2695
|
+
|
|
2696
|
+
|
|
2697
|
+
|
|
2698
|
+
|
|
2699
|
+
|
|
2700
|
+
|
|
2701
|
+
|
|
2702
|
+
|
|
2703
|
+
|
|
2704
|
+
|
|
2705
|
+
|
|
2706
|
+
|
|
2707
|
+
|
|
2708
|
+
|
|
2709
|
+
|
|
2710
|
+
|
|
2711
|
+
|
|
2712
|
+
|
|
2713
|
+
|
|
2714
|
+
|
|
2715
|
+
|
|
2716
|
+
|
|
2717
|
+
|
|
2718
|
+
|
|
2719
|
+
|
|
2720
|
+
|
|
2721
|
+
|
|
2722
|
+
|
|
2723
|
+
|
|
2724
|
+
|
|
2725
|
+
|
|
2726
|
+
|
|
2727
|
+
|
|
2728
|
+
|
|
2729
|
+
|
|
2730
|
+
|
|
2731
|
+
|
|
2732
|
+
|
|
2733
|
+
|
|
2734
|
+
|
|
2735
|
+
|
|
2736
|
+
|
|
2737
|
+
|
|
2738
|
+
|
|
2739
|
+
|
|
2740
|
+
|
|
2741
|
+
|
|
2742
|
+
|
|
2743
|
+
|
|
2744
|
+
|
|
2745
|
+
|
|
2746
|
+
|
|
2747
|
+
|
|
2748
|
+
|
|
2749
|
+
|
|
2750
|
+
|
|
2751
|
+
|
|
2752
|
+
|
|
2753
|
+
|
|
2754
|
+
|
|
2755
|
+
|
|
2756
|
+
|
|
2757
|
+
|
|
2758
|
+
|
|
2759
|
+
|
|
2760
|
+
|
|
2761
|
+
|
|
2762
|
+
|
|
2763
|
+
|
|
2764
|
+
|
|
2765
|
+
|
|
2766
|
+
|
|
2767
|
+
|
|
2768
|
+
|
|
2769
|
+
|
|
2770
|
+
* @example
|
|
2771
|
+
* // Display tree
|
|
2772
|
+
* const mm = new TreeMultiMap<number, string>();
|
|
2773
|
+
* mm.add(1, 'a');
|
|
2774
|
+
* expect(() => mm.print()).not.toThrow();
|
|
2775
|
+
*/
|
|
2776
|
+
print(): void;
|
|
2777
|
+
/**
|
|
2778
|
+
* Executes a callback for each entry.
|
|
2779
|
+
* @remarks Time O(n), Space O(1)
|
|
2780
|
+
|
|
2781
|
+
|
|
2782
|
+
|
|
2783
|
+
|
|
2784
|
+
|
|
2785
|
+
|
|
2786
|
+
|
|
2787
|
+
|
|
2788
|
+
|
|
2789
|
+
|
|
2790
|
+
|
|
2791
|
+
|
|
2792
|
+
|
|
2793
|
+
|
|
2794
|
+
|
|
2795
|
+
|
|
2796
|
+
|
|
2797
|
+
|
|
2798
|
+
|
|
2799
|
+
|
|
2800
|
+
|
|
2801
|
+
|
|
2802
|
+
|
|
2803
|
+
|
|
2804
|
+
|
|
2805
|
+
|
|
2806
|
+
|
|
2807
|
+
|
|
2808
|
+
|
|
2809
|
+
|
|
2810
|
+
|
|
2811
|
+
|
|
2812
|
+
|
|
2813
|
+
|
|
2814
|
+
|
|
2815
|
+
|
|
2816
|
+
|
|
2817
|
+
|
|
2818
|
+
|
|
2819
|
+
|
|
2820
|
+
|
|
2821
|
+
|
|
2822
|
+
|
|
2823
|
+
|
|
2824
|
+
|
|
2825
|
+
|
|
2826
|
+
|
|
2827
|
+
|
|
2828
|
+
|
|
2829
|
+
|
|
2830
|
+
|
|
2831
|
+
|
|
2832
|
+
|
|
2833
|
+
|
|
2834
|
+
|
|
2835
|
+
|
|
2836
|
+
|
|
2837
|
+
|
|
2838
|
+
|
|
2839
|
+
|
|
2840
|
+
|
|
2841
|
+
|
|
2842
|
+
|
|
2843
|
+
|
|
2844
|
+
|
|
2845
|
+
|
|
2846
|
+
|
|
2847
|
+
|
|
2848
|
+
|
|
2849
|
+
|
|
2850
|
+
|
|
2851
|
+
|
|
2852
|
+
|
|
2853
|
+
|
|
2854
|
+
|
|
2855
|
+
|
|
2856
|
+
|
|
2857
|
+
|
|
2858
|
+
|
|
2859
|
+
|
|
2860
|
+
|
|
2861
|
+
|
|
2862
|
+
|
|
2863
|
+
|
|
2864
|
+
|
|
2865
|
+
|
|
2866
|
+
|
|
2867
|
+
|
|
2868
|
+
|
|
2869
|
+
|
|
2870
|
+
|
|
176
2871
|
|
|
177
2872
|
|
|
178
2873
|
|
|
@@ -226,16 +2921,27 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
226
2921
|
|
|
227
2922
|
|
|
228
2923
|
* @example
|
|
229
|
-
* //
|
|
2924
|
+
* // Iterate entries
|
|
230
2925
|
* const mm = new TreeMultiMap<number, string>();
|
|
231
2926
|
* mm.add(1, 'a');
|
|
232
|
-
*
|
|
233
|
-
*
|
|
2927
|
+
* mm.add(2, 'b');
|
|
2928
|
+
* const keys: number[] = [];
|
|
2929
|
+
* mm.forEach((v, k) => keys.push(k));
|
|
2930
|
+
* console.log(keys); // [1, 2];
|
|
234
2931
|
*/
|
|
235
|
-
|
|
2932
|
+
forEach(callback: (value: V[], key: K, map: this) => void): void;
|
|
236
2933
|
/**
|
|
237
|
-
*
|
|
238
|
-
* @remarks Time O(
|
|
2934
|
+
* Creates a new map with entries that pass the predicate.
|
|
2935
|
+
* @remarks Time O(n), Space O(n)
|
|
2936
|
+
|
|
2937
|
+
|
|
2938
|
+
|
|
2939
|
+
|
|
2940
|
+
|
|
2941
|
+
|
|
2942
|
+
|
|
2943
|
+
|
|
2944
|
+
|
|
239
2945
|
|
|
240
2946
|
|
|
241
2947
|
|
|
@@ -288,17 +2994,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
288
2994
|
|
|
289
2995
|
|
|
290
2996
|
|
|
291
|
-
* @example
|
|
292
|
-
* // Get values for key
|
|
293
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
294
|
-
* mm.add(1, 'a');
|
|
295
|
-
* mm.add(1, 'b');
|
|
296
|
-
* console.log(mm.get(1)); // ['a', 'b'];
|
|
297
|
-
*/
|
|
298
|
-
get(key: K): V[] | undefined;
|
|
299
|
-
/**
|
|
300
|
-
* Append a single value.
|
|
301
|
-
* @remarks Time O(log n), Space O(1)
|
|
302
2997
|
|
|
303
2998
|
|
|
304
2999
|
|
|
@@ -331,18 +3026,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
331
3026
|
|
|
332
3027
|
|
|
333
3028
|
|
|
334
|
-
* @example
|
|
335
|
-
* // Add key-value pair
|
|
336
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
337
|
-
* mm.add(1, 'a');
|
|
338
|
-
* mm.add(1, 'b');
|
|
339
|
-
* mm.add(2, 'c');
|
|
340
|
-
* console.log(mm.get(1)); // ['a', 'b'];
|
|
341
|
-
*/
|
|
342
|
-
add(key: K, value: V): boolean;
|
|
343
|
-
/**
|
|
344
|
-
* Alias for compatibility with existing TreeMultiMap semantics.
|
|
345
|
-
* @remarks Time O(log n), Space O(1) for single value; O(log n + m) for bucket append
|
|
346
3029
|
|
|
347
3030
|
|
|
348
3031
|
|
|
@@ -394,17 +3077,65 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
394
3077
|
|
|
395
3078
|
|
|
396
3079
|
* @example
|
|
397
|
-
* //
|
|
3080
|
+
* // Filter entries
|
|
398
3081
|
* const mm = new TreeMultiMap<number, string>();
|
|
399
|
-
* mm.
|
|
400
|
-
* mm.
|
|
401
|
-
*
|
|
3082
|
+
* mm.add(1, 'a');
|
|
3083
|
+
* mm.add(2, 'b');
|
|
3084
|
+
* mm.add(3, 'c');
|
|
3085
|
+
* const filtered = mm.filter((v, k) => k > 1);
|
|
3086
|
+
* console.log([...filtered.keys()]); // [2, 3];
|
|
402
3087
|
*/
|
|
403
|
-
|
|
404
|
-
set(key: K, value: V): boolean;
|
|
3088
|
+
filter(predicate: (value: V[], key: K, map: this) => boolean): TreeMultiMap<K, V, R>;
|
|
405
3089
|
/**
|
|
406
|
-
*
|
|
407
|
-
* @remarks Time O(log n), Space O(
|
|
3090
|
+
* Creates a new map by transforming each entry.
|
|
3091
|
+
* @remarks Time O(n log n), Space O(n)
|
|
3092
|
+
|
|
3093
|
+
|
|
3094
|
+
|
|
3095
|
+
|
|
3096
|
+
|
|
3097
|
+
|
|
3098
|
+
|
|
3099
|
+
|
|
3100
|
+
|
|
3101
|
+
|
|
3102
|
+
|
|
3103
|
+
|
|
3104
|
+
|
|
3105
|
+
|
|
3106
|
+
|
|
3107
|
+
|
|
3108
|
+
|
|
3109
|
+
|
|
3110
|
+
|
|
3111
|
+
|
|
3112
|
+
|
|
3113
|
+
|
|
3114
|
+
|
|
3115
|
+
|
|
3116
|
+
|
|
3117
|
+
|
|
3118
|
+
|
|
3119
|
+
|
|
3120
|
+
|
|
3121
|
+
|
|
3122
|
+
|
|
3123
|
+
|
|
3124
|
+
|
|
3125
|
+
|
|
3126
|
+
|
|
3127
|
+
|
|
3128
|
+
|
|
3129
|
+
|
|
3130
|
+
|
|
3131
|
+
|
|
3132
|
+
|
|
3133
|
+
|
|
3134
|
+
|
|
3135
|
+
|
|
3136
|
+
|
|
3137
|
+
|
|
3138
|
+
|
|
408
3139
|
|
|
409
3140
|
|
|
410
3141
|
|
|
@@ -457,65 +3188,12 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
457
3188
|
|
|
458
3189
|
|
|
459
3190
|
|
|
460
|
-
* @example
|
|
461
|
-
* // Remove key
|
|
462
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
463
|
-
* mm.add(1, 'a');
|
|
464
|
-
* mm.add(2, 'b');
|
|
465
|
-
* mm.delete(1);
|
|
466
|
-
* console.log(mm.has(1)); // false;
|
|
467
|
-
*/
|
|
468
|
-
delete(key: K): boolean;
|
|
469
|
-
/**
|
|
470
|
-
* Check if a specific value exists in a key's bucket.
|
|
471
|
-
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
472
3191
|
|
|
473
3192
|
|
|
474
|
-
* @example
|
|
475
|
-
* // Check specific key-value
|
|
476
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
477
|
-
* mm.add(1, 'a');
|
|
478
|
-
* console.log(mm.hasEntry(1, 'a')); // true;
|
|
479
|
-
* console.log(mm.hasEntry(1, 'z')); // false;
|
|
480
|
-
*/
|
|
481
|
-
hasEntry(key: K, value: V, eq?: (a: V, b: V) => boolean): boolean;
|
|
482
|
-
/**
|
|
483
|
-
* Delete a single occurrence of a value from a key's bucket.
|
|
484
|
-
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
485
3193
|
|
|
486
3194
|
|
|
487
|
-
* @example
|
|
488
|
-
* // Delete specific value
|
|
489
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
490
|
-
* mm.add(1, 'a');
|
|
491
|
-
* mm.add(1, 'b');
|
|
492
|
-
* mm.deleteValue(1, 'a');
|
|
493
|
-
* console.log(mm.get(1)); // ['b'];
|
|
494
|
-
*/
|
|
495
|
-
deleteValue(key: K, value: V, eq?: (a: V, b: V) => boolean): boolean;
|
|
496
|
-
/**
|
|
497
|
-
* Delete all occurrences of a value from a key's bucket.
|
|
498
|
-
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
499
3195
|
|
|
500
3196
|
|
|
501
|
-
* @example
|
|
502
|
-
* // Delete all matching values
|
|
503
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
504
|
-
* mm.add(1, 'a');
|
|
505
|
-
* mm.add(1, 'a');
|
|
506
|
-
* mm.add(1, 'b');
|
|
507
|
-
* const count = mm.deleteValues(1, 'a');
|
|
508
|
-
* console.log(count); // 2;
|
|
509
|
-
*/
|
|
510
|
-
deleteValues(key: K, value: V, eq?: (a: V, b: V) => boolean): number;
|
|
511
|
-
/**
|
|
512
|
-
* Iterates over all entries as [key, bucket] pairs.
|
|
513
|
-
* @remarks Time O(n), Space O(1)
|
|
514
|
-
*/
|
|
515
|
-
[Symbol.iterator](): Iterator<[K, V[]]>;
|
|
516
|
-
/**
|
|
517
|
-
* Iterates over all keys.
|
|
518
|
-
* @remarks Time O(n), Space O(1)
|
|
519
3197
|
|
|
520
3198
|
|
|
521
3199
|
|
|
@@ -555,15 +3233,15 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
555
3233
|
|
|
556
3234
|
|
|
557
3235
|
* @example
|
|
558
|
-
* //
|
|
3236
|
+
* // Transform values
|
|
559
3237
|
* const mm = new TreeMultiMap<number, string>();
|
|
560
|
-
* mm.add(3, 'c');
|
|
561
3238
|
* mm.add(1, 'a');
|
|
562
|
-
*
|
|
3239
|
+
* const mapped = mm.map((v, k) => [k, v.map(s => s.toUpperCase())] as [number, string[]]);
|
|
3240
|
+
* console.log(mapped.get(1)); // ['A'];
|
|
563
3241
|
*/
|
|
564
|
-
|
|
3242
|
+
map<V2>(mapper: (value: V[], key: K, map: this) => [K, V2[]]): TreeMultiMap<K, V2, R>;
|
|
565
3243
|
/**
|
|
566
|
-
*
|
|
3244
|
+
* Reduces all entries to a single value.
|
|
567
3245
|
* @remarks Time O(n), Space O(1)
|
|
568
3246
|
|
|
569
3247
|
|
|
@@ -603,58 +3281,12 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
603
3281
|
|
|
604
3282
|
|
|
605
3283
|
|
|
606
|
-
* @example
|
|
607
|
-
* // Iterate value arrays
|
|
608
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
609
|
-
* mm.add(1, 'a');
|
|
610
|
-
* mm.add(1, 'b');
|
|
611
|
-
* console.log([...mm.values()]); // [['a', 'b']];
|
|
612
|
-
*/
|
|
613
|
-
values(): IterableIterator<V[]>;
|
|
614
|
-
/**
|
|
615
|
-
* Iterates over all entries for a specific key.
|
|
616
|
-
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
617
3284
|
|
|
618
3285
|
|
|
619
|
-
* @example
|
|
620
|
-
* // Get entries for key
|
|
621
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
622
|
-
* mm.add(1, 'a');
|
|
623
|
-
* mm.add(1, 'b');
|
|
624
|
-
* console.log([...mm.entriesOf(1)]); // [[1, 'a'], [1, 'b']];
|
|
625
|
-
*/
|
|
626
|
-
entriesOf(key: K): IterableIterator<[K, V]>;
|
|
627
|
-
/**
|
|
628
|
-
* Iterates over all values for a specific key.
|
|
629
|
-
* @remarks Time O(log n + m), Space O(1) where m is bucket size
|
|
630
3286
|
|
|
631
3287
|
|
|
632
|
-
* @example
|
|
633
|
-
* // Get flat values for key
|
|
634
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
635
|
-
* mm.add(1, 'a');
|
|
636
|
-
* mm.add(1, 'b');
|
|
637
|
-
* console.log([...mm.valuesOf(1)]); // ['a', 'b'];
|
|
638
|
-
*/
|
|
639
|
-
valuesOf(key: K): IterableIterator<V>;
|
|
640
|
-
/**
|
|
641
|
-
* Iterates over all [key, value] pairs (flattened from buckets).
|
|
642
|
-
* @remarks Time O(T), Space O(1) where T is totalSize
|
|
643
3288
|
|
|
644
3289
|
|
|
645
|
-
* @example
|
|
646
|
-
* // All key-value pairs flattened
|
|
647
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
648
|
-
* mm.add(1, 'a');
|
|
649
|
-
* mm.add(1, 'b');
|
|
650
|
-
* mm.add(2, 'c');
|
|
651
|
-
* console.log([...mm.flatEntries()]); // [[1, 'a'], [1, 'b'], [2, 'c']];
|
|
652
|
-
*/
|
|
653
|
-
flatEntries(): IterableIterator<[K, V]>;
|
|
654
|
-
/**
|
|
655
|
-
* Returns the entry with the smallest key.
|
|
656
|
-
* @remarks Time O(log n), Space O(1)
|
|
657
|
-
|
|
658
3290
|
|
|
659
3291
|
|
|
660
3292
|
|
|
@@ -668,18 +3300,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
668
3300
|
|
|
669
3301
|
|
|
670
3302
|
|
|
671
|
-
* @example
|
|
672
|
-
* // First entry
|
|
673
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
674
|
-
* mm.add(3, 'c');
|
|
675
|
-
* mm.add(1, 'a');
|
|
676
|
-
* console.log(mm.first()?.[0]); // 1;
|
|
677
|
-
*/
|
|
678
|
-
first(): [K, V[]] | undefined;
|
|
679
|
-
/**
|
|
680
|
-
* Returns the entry with the largest key.
|
|
681
|
-
* @remarks Time O(log n), Space O(1)
|
|
682
|
-
|
|
683
3303
|
|
|
684
3304
|
|
|
685
3305
|
|
|
@@ -693,49 +3313,39 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
693
3313
|
|
|
694
3314
|
|
|
695
3315
|
|
|
696
|
-
* @example
|
|
697
|
-
* // Last entry
|
|
698
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
699
|
-
* mm.add(1, 'a');
|
|
700
|
-
* mm.add(3, 'c');
|
|
701
|
-
* console.log(mm.last()?.[0]); // 3;
|
|
702
|
-
*/
|
|
703
|
-
last(): [K, V[]] | undefined;
|
|
704
|
-
/**
|
|
705
|
-
* Removes and returns the entry with the smallest key.
|
|
706
|
-
* @remarks Time O(log n), Space O(1)
|
|
707
|
-
|
|
708
3316
|
|
|
709
3317
|
|
|
710
|
-
* @example
|
|
711
|
-
* // Remove and return first
|
|
712
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
713
|
-
* mm.add(2, 'b');
|
|
714
|
-
* mm.add(1, 'a');
|
|
715
|
-
* const first = mm.pollFirst();
|
|
716
|
-
* console.log(first?.[0]); // 1;
|
|
717
|
-
* console.log(mm.has(1)); // false;
|
|
718
|
-
*/
|
|
719
|
-
pollFirst(): [K, V[]] | undefined;
|
|
720
|
-
/**
|
|
721
|
-
* Removes and returns the entry with the largest key.
|
|
722
|
-
* @remarks Time O(log n), Space O(1)
|
|
723
|
-
|
|
724
3318
|
|
|
725
3319
|
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
3320
|
+
|
|
3321
|
+
|
|
3322
|
+
|
|
3323
|
+
|
|
3324
|
+
|
|
3325
|
+
|
|
3326
|
+
|
|
3327
|
+
|
|
3328
|
+
|
|
3329
|
+
|
|
3330
|
+
|
|
3331
|
+
|
|
3332
|
+
|
|
3333
|
+
|
|
3334
|
+
|
|
3335
|
+
|
|
3336
|
+
|
|
3337
|
+
|
|
3338
|
+
|
|
3339
|
+
|
|
3340
|
+
|
|
3341
|
+
|
|
3342
|
+
|
|
3343
|
+
|
|
3344
|
+
|
|
3345
|
+
|
|
3346
|
+
|
|
3347
|
+
|
|
3348
|
+
|
|
739
3349
|
|
|
740
3350
|
|
|
741
3351
|
|
|
@@ -777,19 +3387,17 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
777
3387
|
|
|
778
3388
|
|
|
779
3389
|
* @example
|
|
780
|
-
* //
|
|
781
|
-
* const mm = new TreeMultiMap<number,
|
|
782
|
-
* mm.add(
|
|
783
|
-
* mm.add(
|
|
784
|
-
* mm.
|
|
785
|
-
* console.log(
|
|
3390
|
+
* // Aggregate
|
|
3391
|
+
* const mm = new TreeMultiMap<number, number>();
|
|
3392
|
+
* mm.add(1, 10);
|
|
3393
|
+
* mm.add(2, 20);
|
|
3394
|
+
* const sum = mm.reduce((acc, v) => acc + v.reduce((a, b) => a + b, 0), 0);
|
|
3395
|
+
* console.log(sum); // 30;
|
|
786
3396
|
*/
|
|
787
|
-
|
|
3397
|
+
reduce<U>(callback: (accumulator: U, value: V[], key: K, map: this) => U, initialValue: U): U;
|
|
788
3398
|
/**
|
|
789
|
-
*
|
|
790
|
-
* @remarks Time O(log n), Space O(
|
|
791
|
-
|
|
792
|
-
|
|
3399
|
+
* Sets multiple entries at once.
|
|
3400
|
+
* @remarks Time O(m log n), Space O(m) where m is input size
|
|
793
3401
|
|
|
794
3402
|
|
|
795
3403
|
|
|
@@ -829,19 +3437,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
829
3437
|
|
|
830
3438
|
|
|
831
3439
|
|
|
832
|
-
* @example
|
|
833
|
-
* // Greatest key ≤ target
|
|
834
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
835
|
-
* mm.add(10, 'a');
|
|
836
|
-
* mm.add(20, 'b');
|
|
837
|
-
* mm.add(30, 'c');
|
|
838
|
-
* console.log(mm.floor(25)?.[0]); // 20;
|
|
839
|
-
*/
|
|
840
|
-
floor(key: K): [K, V[]] | undefined;
|
|
841
|
-
/**
|
|
842
|
-
* Returns the entry with the smallest key > given key.
|
|
843
|
-
* @remarks Time O(log n), Space O(1)
|
|
844
|
-
|
|
845
3440
|
|
|
846
3441
|
|
|
847
3442
|
|
|
@@ -871,18 +3466,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
871
3466
|
|
|
872
3467
|
|
|
873
3468
|
|
|
874
|
-
* @example
|
|
875
|
-
* // Least key > target
|
|
876
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
877
|
-
* mm.add(10, 'a');
|
|
878
|
-
* mm.add(20, 'b');
|
|
879
|
-
* console.log(mm.higher(10)?.[0]); // 20;
|
|
880
|
-
*/
|
|
881
|
-
higher(key: K): [K, V[]] | undefined;
|
|
882
|
-
/**
|
|
883
|
-
* Returns the entry with the largest key < given key.
|
|
884
|
-
* @remarks Time O(log n), Space O(1)
|
|
885
|
-
|
|
886
3469
|
|
|
887
3470
|
|
|
888
3471
|
|
|
@@ -912,17 +3495,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
912
3495
|
|
|
913
3496
|
|
|
914
3497
|
|
|
915
|
-
* @example
|
|
916
|
-
* // Greatest key < target
|
|
917
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
918
|
-
* mm.add(10, 'a');
|
|
919
|
-
* mm.add(20, 'b');
|
|
920
|
-
* console.log(mm.lower(20)?.[0]); // 10;
|
|
921
|
-
*/
|
|
922
|
-
lower(key: K): [K, V[]] | undefined;
|
|
923
|
-
/**
|
|
924
|
-
* Prints the internal tree structure (for debugging).
|
|
925
|
-
* @remarks Time O(n), Space O(n)
|
|
926
3498
|
|
|
927
3499
|
|
|
928
3500
|
|
|
@@ -962,15 +3534,15 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
962
3534
|
|
|
963
3535
|
|
|
964
3536
|
* @example
|
|
965
|
-
* //
|
|
3537
|
+
* // Set multiple entries
|
|
966
3538
|
* const mm = new TreeMultiMap<number, string>();
|
|
967
|
-
* mm.
|
|
968
|
-
*
|
|
3539
|
+
* mm.setMany([[1, ['a']], [2, ['b']]]);
|
|
3540
|
+
* console.log(mm.size); // 2;
|
|
969
3541
|
*/
|
|
970
|
-
|
|
3542
|
+
setMany(keysNodesEntriesOrRaws: Iterable<K | [K | null | undefined, V[] | undefined]>): boolean[];
|
|
971
3543
|
/**
|
|
972
|
-
*
|
|
973
|
-
* @remarks Time O(n), Space O(
|
|
3544
|
+
* Searches for entries within a key range.
|
|
3545
|
+
* @remarks Time O(log n + k), Space O(k) where k is result size
|
|
974
3546
|
|
|
975
3547
|
|
|
976
3548
|
|
|
@@ -1009,19 +3581,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1009
3581
|
|
|
1010
3582
|
|
|
1011
3583
|
|
|
1012
|
-
* @example
|
|
1013
|
-
* // Iterate entries
|
|
1014
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
1015
|
-
* mm.add(1, 'a');
|
|
1016
|
-
* mm.add(2, 'b');
|
|
1017
|
-
* const keys: number[] = [];
|
|
1018
|
-
* mm.forEach((v, k) => keys.push(k));
|
|
1019
|
-
* console.log(keys); // [1, 2];
|
|
1020
|
-
*/
|
|
1021
|
-
forEach(callback: (value: V[], key: K, map: this) => void): void;
|
|
1022
|
-
/**
|
|
1023
|
-
* Creates a new map with entries that pass the predicate.
|
|
1024
|
-
* @remarks Time O(n), Space O(n)
|
|
1025
3584
|
|
|
1026
3585
|
|
|
1027
3586
|
|
|
@@ -1060,19 +3619,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1060
3619
|
|
|
1061
3620
|
|
|
1062
3621
|
|
|
1063
|
-
* @example
|
|
1064
|
-
* // Filter entries
|
|
1065
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
1066
|
-
* mm.add(1, 'a');
|
|
1067
|
-
* mm.add(2, 'b');
|
|
1068
|
-
* mm.add(3, 'c');
|
|
1069
|
-
* const filtered = mm.filter((v, k) => k > 1);
|
|
1070
|
-
* console.log([...filtered.keys()]); // [2, 3];
|
|
1071
|
-
*/
|
|
1072
|
-
filter(predicate: (value: V[], key: K, map: this) => boolean): TreeMultiMap<K, V, R>;
|
|
1073
|
-
/**
|
|
1074
|
-
* Creates a new map by transforming each entry.
|
|
1075
|
-
* @remarks Time O(n log n), Space O(n)
|
|
1076
3622
|
|
|
1077
3623
|
|
|
1078
3624
|
|
|
@@ -1112,16 +3658,25 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1112
3658
|
|
|
1113
3659
|
|
|
1114
3660
|
* @example
|
|
1115
|
-
* //
|
|
3661
|
+
* // Find keys in range
|
|
1116
3662
|
* const mm = new TreeMultiMap<number, string>();
|
|
1117
|
-
* mm.add(
|
|
1118
|
-
*
|
|
1119
|
-
*
|
|
3663
|
+
* mm.add(10, 'a');
|
|
3664
|
+
* mm.add(20, 'b');
|
|
3665
|
+
* mm.add(30, 'c');
|
|
3666
|
+
* const result = mm.rangeSearch([15, 25]);
|
|
3667
|
+
* console.log(result.length); // 1;
|
|
1120
3668
|
*/
|
|
1121
|
-
|
|
3669
|
+
rangeSearch<C extends (node: RedBlackTreeNode<K, V[]>) => unknown>(range: Range<K> | [K, K], callback?: C): ReturnType<C>[];
|
|
1122
3670
|
/**
|
|
1123
|
-
*
|
|
1124
|
-
* @remarks Time O(n), Space O(
|
|
3671
|
+
* Creates a shallow clone of this map.
|
|
3672
|
+
* @remarks Time O(n log n), Space O(n)
|
|
3673
|
+
|
|
3674
|
+
|
|
3675
|
+
|
|
3676
|
+
|
|
3677
|
+
|
|
3678
|
+
|
|
3679
|
+
|
|
1125
3680
|
|
|
1126
3681
|
|
|
1127
3682
|
|
|
@@ -1160,18 +3715,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1160
3715
|
|
|
1161
3716
|
|
|
1162
3717
|
|
|
1163
|
-
* @example
|
|
1164
|
-
* // Aggregate
|
|
1165
|
-
* const mm = new TreeMultiMap<number, number>();
|
|
1166
|
-
* mm.add(1, 10);
|
|
1167
|
-
* mm.add(2, 20);
|
|
1168
|
-
* const sum = mm.reduce((acc, v) => acc + v.reduce((a, b) => a + b, 0), 0);
|
|
1169
|
-
* console.log(sum); // 30;
|
|
1170
|
-
*/
|
|
1171
|
-
reduce<U>(callback: (accumulator: U, value: V[], key: K, map: this) => U, initialValue: U): U;
|
|
1172
|
-
/**
|
|
1173
|
-
* Sets multiple entries at once.
|
|
1174
|
-
* @remarks Time O(m log n), Space O(m) where m is input size
|
|
1175
3718
|
|
|
1176
3719
|
|
|
1177
3720
|
|
|
@@ -1202,16 +3745,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1202
3745
|
|
|
1203
3746
|
|
|
1204
3747
|
|
|
1205
|
-
* @example
|
|
1206
|
-
* // Set multiple entries
|
|
1207
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
1208
|
-
* mm.setMany([[1, ['a']], [2, ['b']]]);
|
|
1209
|
-
* console.log(mm.size); // 2;
|
|
1210
|
-
*/
|
|
1211
|
-
setMany(keysNodesEntriesOrRaws: Iterable<K | [K | null | undefined, V[] | undefined]>): boolean[];
|
|
1212
|
-
/**
|
|
1213
|
-
* Searches for entries within a key range.
|
|
1214
|
-
* @remarks Time O(log n + k), Space O(k) where k is result size
|
|
1215
3748
|
|
|
1216
3749
|
|
|
1217
3750
|
|
|
@@ -1242,19 +3775,6 @@ export declare class TreeMultiMap<K = any, V = any, R = any> implements Iterable
|
|
|
1242
3775
|
|
|
1243
3776
|
|
|
1244
3777
|
|
|
1245
|
-
* @example
|
|
1246
|
-
* // Find keys in range
|
|
1247
|
-
* const mm = new TreeMultiMap<number, string>();
|
|
1248
|
-
* mm.add(10, 'a');
|
|
1249
|
-
* mm.add(20, 'b');
|
|
1250
|
-
* mm.add(30, 'c');
|
|
1251
|
-
* const result = mm.rangeSearch([15, 25]);
|
|
1252
|
-
* console.log(result.length); // 1;
|
|
1253
|
-
*/
|
|
1254
|
-
rangeSearch<C extends (node: RedBlackTreeNode<K, V[]>) => unknown>(range: Range<K> | [K, K], callback?: C): ReturnType<C>[];
|
|
1255
|
-
/**
|
|
1256
|
-
* Creates a shallow clone of this map.
|
|
1257
|
-
* @remarks Time O(n log n), Space O(n)
|
|
1258
3778
|
|
|
1259
3779
|
|
|
1260
3780
|
|