首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从List<Byte>创建byte[]

从List<Byte>创建byte[]
EN

Stack Overflow用户
提问于 2009-10-14 18:30:47
回答 3查看 11.6K关注 0票数 8

执行此操作的最有效方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-14 10:39:35

代码语言:javascript
复制
byte[] byteArray = new byte[byteList.size()];
for (int index = 0; index < byteList.size(); index++) {
    byteArray[index] = byteList.get(index);
}

您可能不喜欢它,但这是创建真正的byte™阵列®的唯一方法。

正如评论中指出的,还有其他方法。然而,这些方法都绕过了a)创建数组和b)分配每个元素。这个使用的是iterator

代码语言:javascript
复制
byte[] byteArray = new byte[byteList.size()];
int index = 0;
for (byte b : byteList) {
    byteArray[index++] = b;
}
票数 15
EN

Stack Overflow用户

发布于 2009-10-14 10:34:03

toArray()方法听起来是个不错的选择。

更新:尽管,正如人们友好地指出的那样,这适用于“盒装”值。因此,普通的for-loop看起来也是一个非常好的选择。

票数 4
EN

Stack Overflow用户

发布于 2009-10-14 12:54:57

使用Bytes.toArray(http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/primitives/Bytes.html#toArray(java.util.Collection%29)`(Collection)` (来自谷歌的Guava库)。

示例:

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.google.common.primitives.Bytes;

class Test {
    public static void main(String[] args) {
        List<Byte> byteList = new ArrayList<Byte>();
        byteList.add((byte) 1);
        byteList.add((byte) 2);
        byteList.add((byte) 3);
        byte[] byteArray = Bytes.toArray(byteList);
        System.out.println(Arrays.toString(byteArray));
    }
}

或者类似地,使用PCJ

代码语言:javascript
复制
import bak.pcj.Adapter;

// ...

byte[] byteArray = Adapter.asBytes(byteList).toArray();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1565483

复制
相关文章

相似问题

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