我需要一个字节的缓冲区类Java单程使用。我应该可以插入数据,在后面的缓冲区和读取的数据在前面,用摊销成本的O(1)。缓冲区应当调整的时候它是完整的,而不是扔一个例外或东西。

我可以写一个自己,但是我会很惊讶如果不是存在于一个标准Java包,并且如果它不,我会希望它存在一些久经考验的公共图书馆。

你有什么建议?

有帮助吗?

解决方案

不知道,如果它是"最好",但是,你有一个很好的例子 圆形的字节的缓冲器在这里.

那些 Java公用事业-OstermillerUtils 类下 GPL许可证.

这个圆形的字节的缓冲区实施的循环缓冲区生产者/消费者模型字节。填充和排空的缓冲区是与标准Java InputStreams和OutputStreams.

使用这类是一个更简单的替代使用PipedInputStream和PipedOutputStream.
PipedInputStreams和PipedOutputStreams不支持的标志操作,不允许控制的缓冲,他们使用,并有一个更复杂的API,需要一个实例,两类和连接它们。

其他提示

我不知道,如果这个工作很好

https://svn.apache.org/repos/asf/etch/releases/release-1.0.0/util/src/main/java/etch/util/CircularByteBuffer.java

我们可能试试这个,因为它是apache许可证。

我使用的是具有相似需求的项目java.util.ArrayDeque<Byte>。请注意,您可以使用的java.util.concurrent Queue轻易改变实施 实施

我写这样一类: ByteRingBuffer

它不会自动调整大小,但有一个调整大小()方法。

它的“良好测试的”带有自动测试程序中,使用随机数来测试所有可能的情况。

另一个解决方案是以使用 GrowablePipedOutputStreamGrowablePipedInputStream 通过Boss.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top