将字节的ArrayList转换为byte []

时间:2012-05-19 17:29:48

标签: java

我正在寻找将字节的ArrayList转换为byte [],以便稍后创建具有这些字节的文件。我已经搜索了如何做到这一点的高低,但仍然无法绕过它。怎么办呢?

4 个答案:

答案 0 :(得分:4)

没有ArrayList<byte>这样的东西。当你声明一个时,你得到一个ArrayList<Byte>。所以没有单一的功能习惯用于将其转换为byte[]。您必须分配byte[],然后编写一个循环来复制值。

或者,你可以使用fastutil库,它有一个像ArrayList这样的容器来存储byte并且可以产生一个数组。

答案 1 :(得分:4)

ArrayList<Byte> in = ...;
int n = in.size();
byte[] out = new byte[n];
for (int i = 0; i < n; i++) {
  out[i] = in.get(i);
}

如果您需要byte[]而不是Byte[],我认为标准库不提供上述任何快捷方式。

答案 2 :(得分:1)

功能toArray应该可以工作,但我没有尝试测试它的可能性..

    ArrayList<Byte> listArray = new ArrayList<Byte>();

    listArray.add((byte)1);
    listArray.add((byte)2);
    listArray.add((byte)3);

    Byte[] myArray = new Byte[3];
    listArray.toArray(myArray);

我不知道boxing是否会对您造成问题,如果您想在写入文件时使用它。

答案 3 :(得分:1)

如果您有Guava的访问权限,则只有Bytes.toArray(byteList)。 (披露:我向Guava捐款。)