1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 1× 1× 16× 17× 16× 1× 221× 221× 221× 1× 1× 221× 1× | import * as Collections from "typescript-collections"; export class FixedQueue<T> extends Collections.Queue<T> { public maxSize = 0; constructor(maxSize: number) { super(); this.maxSize = maxSize; } enqueue(elem: T): boolean { const val = super.enqueue(elem); this.enforceSize(); return val; } add(elem: T): boolean { const val = super.add(elem); this.enforceSize(); return val; } protected enforceSize() { while (this.size() > this.maxSize) { this.dequeue(); } } }; |