java - 在 Java 中快速删除(不清除)一个 ByteBuffer

标签 java bytebuffer erase

我正在尝试“清理”一个 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/

相关文章:

java - 确定合适的缓冲区大小

java - 为什么java泛型必须删除类型信息?

java - Android将多个不同大小的位图绘制到相同大小的 Canvas

java - 仅将方法参数的子集传递给通知

java - 带注释的 Collection 袋

java - 如何在没有 byteBuffer.array() 的情况下将一个 byteBuffer 部分复制到另一个 byteBuffer

java - 为什么我的 Spring webflux 应用程序在每个请求上都会生成临时文件?

c++ - 不再删除 std::map 的已用内容

c++ - 删除时 std::list end() 迭代器位置是否改变?

java - 如何忽略文本中的值?