export class FIFOBuffer { 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]; } }