Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字节数组列表转换为字节[]_Java - Fatal编程技术网

Java 将字节数组列表转换为字节[]

Java 将字节数组列表转换为字节[],java,Java,我希望将字节的ArrayList转换为字节[],以便稍后使用这些字节创建一个文件。我已经到处寻找如何做到这一点,但仍然不能得到我的头周围。如何做到这一点?没有数组列表这样的东西。当您声明一个时,您会得到一个ArrayList。因此,没有单一的函数习惯用法可以将其转换为byte[]。您必须分配字节[],然后编写一个循环来复制这些值 或者,您可以使用fastutil库,它确实有一个容器,如存储字节的ArrayList,并且可以生成一个数组。toArray函数应该可以工作,但是我没有可能测试它

我希望将字节的ArrayList转换为字节[],以便稍后使用这些字节创建一个文件。我已经到处寻找如何做到这一点,但仍然不能得到我的头周围。如何做到这一点?

没有
数组列表这样的东西。当您声明一个时,您会得到一个
ArrayList
。因此,没有单一的函数习惯用法可以将其转换为
byte[]
。您必须分配
字节[]
,然后编写一个循环来复制这些值


或者,您可以使用fastutil库,它确实有一个容器,如存储字节的ArrayList,并且可以生成一个数组。

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);
ArrayList listArray=new ArrayList();
添加((字节)1);
add((字节)2);
add((字节)3);
字节[]myArray=新字节[3];
toArray(myArray);
但是,如果您想在写入文件时使用它,我不知道是否会对您造成问题。

ArrayList in=。。。;
ArrayList<Byte> in = ...;
int n = in.size();
byte[] out = new byte[n];
for (int i = 0; i < n; i++) {
  out[i] = in.get(i);
}
int n=in.size(); 字节[]输出=新字节[n]; 对于(int i=0;i

我不认为标准库为上述内容提供了任何快捷方式,只要您需要
byte[]
,而不是
byte[]
,如果您有权访问,它只是。(披露:我为番石榴做了贡献。)

与字节[]相比,使用ArrayList[Byte]效率也非常低。每个元素都有一个对象指针(4-8字节)+字节对象开销(12字节)+数据的实际字节。您确实希望避免这种情况,尤其是使用大型阵列时。这就是40MB的数据在内存中变成840MB的原因。经过进一步研究,我发现以下几点。。。这能解决我的问题吗?OP没有要求字节[],而是要求字节[]。当我尝试使用它时,我在底线的第二行上得到一个imcompatible类型错误。必需字节,找到对象。@只有在没有正确复制第一行的情况下才使用user1286779。