Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_List_Byte - Fatal编程技术网

Java 从列表创建字节[]<;字节>;

Java 从列表创建字节[]<;字节>;,java,arrays,list,byte,Java,Arrays,List,Byte,最有效的方法是什么?这种方法听起来不错 更新:不过,正如人们善意地指出的那样,这适用于“盒装”值。因此,一个简单的for-循环看起来也是一个很好的选择。使用(集合)(来自谷歌图书馆) byte[] byteArray = new byte[byteList.size()]; for (int index = 0; index < byteList.size(); index++) { byteArray[index] = byteList.get(index); } 例如: im

最有效的方法是什么?

这种方法听起来不错

更新:不过,正如人们善意地指出的那样,这适用于“盒装”值。因此,一个简单的
for
-循环看起来也是一个很好的选择。

使用
(集合)
(来自谷歌图书馆)

byte[] byteArray = new byte[byteList.size()];
for (int index = 0; index < byteList.size(); index++) {
    byteArray[index] = byteList.get(index);
}
例如:

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));
    }
}

好吧,这是一种方法,但会产生一个字节[],它需要单独的元素取消装箱。所有字节值都存储为不可变对象(请参阅)。因此,就性能而言,拆箱(可能)可以忽略不计。不过,测量一下会很有趣。嗯,不有趣。如果你想(原语)的话,你无论如何都需要拆箱bytes@Brian你还需要考虑空间开销。对于相同的信息内容,大字节[]将占用至少4倍于字节[]的空间。也许更多,取决于原始字节值是如何创建的。编程的方法不止一种!使用Iteraotr或ListIterator怎么样?你完全正确。添加了一个基于
迭代器的示例。:)-1因为你要求的是最有效的方法,而不是最简单、最干净、最容易理解的方法。为什么这么多人在微优化上浪费这么多时间?starblue,“最高效”可能意味着“最容易编写和维护”,这可能意味着最简单和最干净。“高效”一词不一定指性能。+1,因为有时候你已经完成了功课(评测),真的需要进行这种优化。这个问题通常是相关的,即使在老年退休金计划的情况下也不一定如此。
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));
    }
}
import bak.pcj.Adapter;

// ...

byte[] byteArray = Adapter.asBytes(byteList).toArray();