ByteBuffer 中可以通过4个索引高效操作数据,它们分别是:mark(标记)、position(位置)、limit(界限)、capacity(容量)。
下表是具体操作这些索引的方法:
| 方法名 | 用途 |
|---|---|
| capacity() | 返回缓冲区容量 |
| clear() | 清空缓冲区,将 position 设置为0,limit 设置为 capacity。可以通过此方法覆写缓冲区 |
| flip() | 将 limit 设置为 position ,position 设置为0。此方法用于准备从缓冲区读取数据 |
| limit() | 返回 limit 的值 |
| limit(int newLimit) | 设置 limit 的值 |
| mark() | 将 mark 设置为 position |
| position() | 返回 position 的值 |
| position(int newPosition) | 设置 position 的值 |
| remaining() | 返回 ( limit - newPosition ) |
| hasRemaining() | 若有介于 postion 和 limit 之间的元素,则返回 true |
初看这些方法可能会有点摸不着头脑,下面我们一起学习一个简单的例子:交换相邻字符,以便于加深理解。
public class UsingBuffers {
private static void symmetricScramble(CharBuffer buffer) {
while (buffer.hasRemaining())
深入理解ByteBuffer:操作数据的四个索引

最低0.47元/天 解锁文章
375

被折叠的 条评论
为什么被折叠?



