将ArrayList <byte>转换为byte [] </byte>

时间:2011-07-28 13:51:34

标签: java arrays arraylist primitive-types

  

可能重复:
  How to convert an ArrayList containing Integers to primitive int array?

如何将ArrayList<Byte>转换为byte[]

ArrayList.toArray()给了我一个Byte[]

4 个答案:

答案 0 :(得分:10)

byte[] result = new byte[list.size()];
for(int i = 0; i < list.size(); i++) {
    result[i] = list.get(i).byteValue();
}

是的,当谈到原始类型时,Java的集合很烦人。

答案 1 :(得分:8)

在调用toArray()之后,您可以将结果传递给Apache Commons toPrimitive方法:

  

http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/ArrayUtils.html#toPrimitive(java.lang.Byte[])&GT;

答案 2 :(得分:5)

没有想到内置的方法。但是,编写一个代码非常简单:

public static byte[] toByteArray(List<Byte> in) {
    final int n = in.size();
    byte ret[] = new byte[n];
    for (int i = 0; i < n; i++) {
        ret[i] = in.get(i);
    }
    return ret;
}

请注意,如果NullPointerExceptionin或其中包含null,则会为您提供nulls。如果您需要不同的行为,如何更改此功能非常明显。

答案 3 :(得分:2)

byte[] data = new byte[list.size()];
for (int i = 0; i < data.length; i++) {
    data[i] = (byte) list.get(i);
}

请注意,这可能需要一些时间,因为Byte个对象需要转换为byte值。

此外,如果您的列表包含null值,则会抛出NullPointerExcpetion