也许我以错误的方式解决这个问题,但我错过了一些绝对的 put 方法ByteBuffer
。
如果您看一下,ByteBuffer
您会发现大多数 put 方法都有绝对变体和相对变体。
除了:
- 将
byte
数组的一部分写入ByteBuffer
. - 将 a
ByteBuffer
写入ByteBuffer
.
..而我正是需要这些。
要清楚ByteBuffer
有方法:
put(byte[] src, int offset, int length)
put(ByteBuffer src)
但缺乏:
put(int index, byte[] src, int offset, int length)
put(int index, ByteBuffer src)
我有理由不想移动缓冲区的位置指针,因此我只想使用绝对 put 方法。
知道为什么这些方法被遗漏了吗?
我当然可以在不移动缓冲区的位置指针的情况下模仿丢失的方法,但这将涉及循环源字节。Javadoc 明确指出,这些方法(可能)比移动比循环和逐个移动字节更有效。我相信 Javadoc,因为我的测试表明相同。我需要尽可能多地从我的实现中挤出速度,因此我当然倾向于利用我可以得到的任何批量方法......如果它们存在的话。
IncedentiallyByteBuffer
也缺少get
用于部分字节数组移动的绝对方法。但我目前实际上并不需要这种方法。但又奇怪它不存在。