我需要一个适用于Java单线程的字节缓冲区类。我应该能够在缓冲区的末尾插入数据,并在前端读取数据,其平摊成本为O(1)。当缓冲区满时,它应该调整大小,而不是抛出异常或其他什么。
我可以自己编写一个,但如果标准Java包中不存在此类,则我会感到非常惊讶,如果没有,则我希望它存在于一些经过充分测试的公共库中。
您会推荐什么?
此循环字节缓冲区实现了字节的循环缓冲区生产者/消费者模型。使用标准Java InputStreams和OutputStreams进行填充和排空缓冲区。
使用此类是使用PipedInputStream和PipedOutputStream的简单替代方法。
PipedInputStreams和PipedOutputStreams不支持标记操作,不允许您控制它们使用的缓冲区大小,并且具有更复杂的API,需要实例化两个类并将它们连接起来。
java.util.ArrayDeque<Byte>
,请注意您可以轻松地改变实现,使用 java.util.concurrent 的 Queue
实现。