makit
Version:
Make in JavaScript done right!
32 lines (31 loc) • 717 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Queue = void 0;
/**
* 简单的队列实现
*
* Array.prototype.shift 在数组较大时耗时明显增加,因此用 Set 实现。
* 注意:重复元素入队会被忽略
*/
class Queue {
constructor() {
this.size = 0;
this.data = new Set();
}
push(item) {
this.data.add(item);
this.size = this.data.size;
}
peek() {
return this.data.values().next().value;
}
pop() {
if (!this.data.size)
return;
const item = this.peek();
this.data.delete(item);
this.size--;
return item;
}
}
exports.Queue = Queue;