可能重复:
How to convert an ArrayList containing Integers to primitive int array?
如何将ArrayList<Byte>
转换为byte[]
?
ArrayList.toArray()
给了我一个Byte[]
。
答案 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方法:
答案 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;
}
请注意,如果NullPointerException
为in
或其中包含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
。