| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- export class FIFOBuffer<T> {
- private buffer: T[] = [];
- private readonly maxSize: number;
- constructor(maxSize: number) {
- if (maxSize <= 0) {
- throw new Error("Buffer size must be greater than 0");
- }
- this.maxSize = maxSize;
- }
- // 添加一个元素(如果超出大小则移除最旧的)
- enqueue(item: T): void {
- if (this.buffer.length >= this.maxSize) {
- this.buffer.shift(); // 移除最早的元素
- }
- this.buffer.push(item);
- }
- // 移除并返回最早的元素
- dequeue(): T | undefined {
- return this.buffer.shift();
- }
- // 查看最早的元素但不移除
- peek(): T | undefined {
- return this.buffer[0];
- }
- // 获取当前缓冲区大小
- size(): number {
- return this.buffer.length;
- }
- // 是否为空
- isEmpty(): boolean {
- return this.buffer.length === 0;
- }
- // 清空缓冲器
- clear(): void {
- this.buffer = [];
- }
- // 查看当前所有元素(按顺序)
- toArray(): T[] {
- return [...this.buffer];
- }
- }
|