假设我有一个list / arrayList或ByteBuffers数组(List<ByteBuffer>
或ByteBuffer[]
)
从这里可以直接从上面的数组中获取字节而不迭代所有项目或计算它们的总大小?我正在寻找这样的东西:
ByteBuffer[] bufferList = new ByteBuffer[7]; //this can be any kind of list of ByteBuffers
//add items to the array
ByteBuffer buffer = (ByteBuffer) bufferList; //what i want to achieve
当然最后一行不正确。
问题是我已经在数组中按顺序排列了所有字节,但我希望它们不再在列表中,而是在单个ByteBuffer中。那么是否有可能从ByteBuffers的列表/数组创建ByteBuffer?
谢谢!
答案 0 :(得分:4)
public ByteBuffer convertToOne(ByteBuffer[] src)
{
int size=0;
for(int i = 0 ; i < src.length ; i++) {
size+=src[i].array().length;
}
ByteBuffer newBuffer = ByteBuffer.allocate(size);
int sizeAt = 0;
for(int i = 0 ; i < src.length ; i++) {
newBuffer.put(src[i].array(), sizeAt);
sizeAt += src[i].array().length;
}
return newBuffer;
}
答案 1 :(得分:0)
我相信你将不得不创建一个新的ByteBuffer
并将bufferList
中的每个缓冲区复制到新的缓冲区中。您应该将此功能放在方法中,以便每次使用时都不重复代码。