我正在尝试“清理”一个 ByteBuffer
为所有零字节(所有 0x00
)。我试图遍历缓冲区中的所有位置并将它们设置为0x00
,但效率很差。有没有更好的方法来快速清除 ByteBuffer
- 类似于 BitSet.clear()
的作用?
请注意,在这种情况下,ByteBuffer.clear()
不是适合我的解决方案——我必须删除缓冲区内的所有数据,而不仅仅是将指针重置为开始。
有什么提示吗?
编辑:ByteBuffer 用作哈希表的一部分,它维护哈希表条目的引用。每次需要刷新哈希表时,我都必须重置哈希表条目以供以后插入哈希表。由于哈希表是以随机方式访问的,我不能简单地清除()字节缓冲区的状态。
最佳答案
您是否尝试过使用 ByteBuffer.put(byte[])
或 ByteBuffer.put(ByteBuffer)
方法之一一次性写入多个零?然后,您可以使用预先填充零的数组或缓冲区,以 100 或 1000 字节或其他大小的 block 为单位遍历缓冲区。
缺点:这是一个可选操作,因此并非所有 ByteBuffer 的实现都需要提供它...
关于java - 在 Java 中快速删除(不清除)一个 ByteBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11197875/