44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.SortedSet = void 0;
|
|
const array_1 = require("../array");
|
|
class SortedSet {
|
|
constructor(comparator) {
|
|
this.array = new array_1.SortedArray(comparator, true);
|
|
}
|
|
has(value) {
|
|
return this.array.includes(value);
|
|
}
|
|
add(...values) {
|
|
this.array.push(...values);
|
|
return this;
|
|
}
|
|
delete(value) {
|
|
return this.array.delete(value);
|
|
}
|
|
keys() {
|
|
return this.array.toArray()[Symbol.iterator]();
|
|
}
|
|
values() {
|
|
return this.array.toArray()[Symbol.iterator]();
|
|
}
|
|
entries() {
|
|
return this.array
|
|
.toArray()
|
|
.map((value) => [value, value])[Symbol.iterator]();
|
|
}
|
|
clear() {
|
|
this.array.clear();
|
|
}
|
|
[Symbol.iterator]() {
|
|
return this.values();
|
|
}
|
|
forEach(cb, thisArg) {
|
|
this.array.toArray().forEach((item) => cb.call(thisArg, item, item, this));
|
|
}
|
|
get size() {
|
|
return this.array.length;
|
|
}
|
|
}
|
|
exports.SortedSet = SortedSet;
|