【发布时间】:2012-06-27 05:06:10
【问题描述】:
我正在尝试“清理”ByteBuffer 使其全部为零字节(全部为 0x00)。我试图遍历缓冲区中的所有位置并将它们设置为0x00,但效率很差。有没有更好的方法来快速清除ByteBuffer - 类似于BitSet.clear() 所做的?
请注意,ByteBuffer.clear() 在这种情况下对我来说不是一个合适的解决方案——我必须擦除缓冲区内的所有数据,而不仅仅是将指针重置到开头。
有什么提示吗?
编辑:ByteBuffer 用作哈希表的一部分,它维护哈希表条目的引用。每次需要刷新哈希表时,我都必须重置哈希表条目以供以后插入哈希表。由于哈希表是以随机方式访问的,因此我不能简单地 clear() 字节缓冲区的状态。
【问题讨论】:
-
你能更详细地解释一下这个用例吗?你从哪里得到字节缓冲区?
-
您认为为什么需要将缓冲区归零?
-
是直接缓冲吗?如果没有,那么
ByteBuffer.wrap(new byte[123456]); -
@GregKopff 我想尽可能地消除对象创建,所以我更喜欢重用 ByteBuffer 而不是包装一个新的。
-
@jontro 添加了更多关于 ByteBuffer 的信息~
标签: java bytebuffer erase