3

我正在寻找将字节的 ArrayList 转换为 byte[] 以便稍后使用这些字节创建文件。我已经搜索了如何做到这一点的高低,但仍然无法理解它。如何才能做到这一点?

4

4 回答 4

4

没有ArrayList<byte>. 当你声明一个时,你会得到一个ArrayList<Byte>. 因此,没有将其转换为byte[]. 您必须分配byte[]然后编写一个循环来复制这些值。

或者,您可以使用 fastutil 库,它确实有一个类似ArrayList存储的容器byte并且可以产生一个数组。

于 2012-05-19T17:38:53.857 回答
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[].

于 2012-05-19T17:46:46.083 回答
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);

我不知道拳击是否对你来说是个问题,如果你想在写入文件时使用它。

于 2012-05-19T17:41:05.867 回答
1

如果您可以访问Guava,那只是Bytes.toArray(byteList). (披露:我为 Guava 做出了贡献。)

于 2012-05-19T18:20:07.590 回答