Java 转换ArrayList<;字节>;转换为字节[]
可能重复:Java 转换ArrayList<;字节>;转换为字节[],java,arrays,arraylist,primitive-types,Java,Arrays,Arraylist,Primitive Types,可能重复: 如何将ArrayList转换为字节[] ArrayList.toArray()返回一个字节[]Byte[]数据=新字节[list.size()]; byte[] data = new byte[list.size()]; for (int i = 0; i < data.length; i++) { data[i] = (byte) list.get(i); } 对于(int i=0;i byte[]result=新字节[list.size()]; 对于(int i
如何将
ArrayList
转换为字节[]
ArrayList.toArray()
返回一个字节[]
Byte[]数据=新字节[list.size()];
byte[] data = new byte[list.size()];
for (int i = 0; i < data.length; i++) {
data[i] = (byte) list.get(i);
}
对于(int i=0;i
请注意,这可能需要一些时间,因为Byte
对象需要转换为Byte
值
此外,如果列表中包含null
值,则调用toArray()后将抛出NullPointerException
,您可以将结果传递到Apache Commons TopPrimitive方法:
>
byte[]result=新字节[list.size()];
对于(int i=0;i
是的,当涉及到基本类型时,Java的集合很烦人。没有想到内置方法。但是,编写一个代码非常简单:
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;
}
公共静态字节[]toByteArray(中的列表){
最终整数n=英寸大小();
字节ret[]=新字节[n];
对于(int i=0;i
请注意,如果中的
为null
或它包含null
,则这将为您提供一个null点异常。如果您需要不同的行为,很明显如何更改此函数。为此,您仍然需要事先在列表中使用toArray()
。此方法将数组作为参数。不是数组列表
。它需要从数组列表
转换为数组,然后将字节
数组转换为字节
数组。不确定这是否是进行转换的最有效的方法。@Vivien我同意这可能不是最有效的,但可能是最简单的编写方法。如果性能是个问题,我会使用Michael或Vivien的答案。byte[]b_arr=ArrayUtils.toPrimitive(arrayList.toArray(新字节[0]);这个解决方案不起作用。TopPrimitiveArray返回intArrayList的数组大约是存储字节的最低效的方法。如果您不知道使用ByteArrayOutputStream with write()和toByteArray()将有多少字节,如果可以避免,请不要使用List。大小中缺少括号()
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;
}