首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以从一个ByteBuffer创建List<ByteBuffer>吗?

可以从一个ByteBuffer创建List<ByteBuffer>吗?
EN

Stack Overflow用户
提问于 2013-08-27 15:09:09
回答 2查看 2.9K关注 0票数 1

假设我有一个list/arrayList或一个ByteBuffers数组(List<ByteBuffer>ByteBuffer[])

是否可以直接从上面的数组中获得字节,而无需迭代所有项或计算它们的总大小?我在找这样的东西:

代码语言:javascript
复制
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中。那么,有什么东西可以从ByteBuffer的列表/数组中创建ByteBuffers呢?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-27 15:18:00

代码语言:javascript
复制
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;
}
票数 4
EN

Stack Overflow用户

发布于 2013-08-27 15:14:58

我相信您将不得不创建一个新的ByteBuffer,并将bufferList中的每个缓冲区复制到新的缓冲区中。您应该将此功能放入方法中,以避免每次使用它时重复代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18469241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档