List<byte[]> listOfByteArrays;
我想通过将所有byte[]
元素附加List
到. 我知道一种方法,那就是使用,但在循环中使用它会有点混乱。试图找到一种更好的方法,但不能。任何指针?我可以使用任何外部 API 吗?byte[]
List
System.arrayCopy()
(temporary variables and byte[] arrays)
List<byte[]> listOfByteArrays;
我想通过将所有byte[]
元素附加List
到. 我知道一种方法,那就是使用,但在循环中使用它会有点混乱。试图找到一种更好的方法,但不能。任何指针?我可以使用任何外部 API 吗?byte[]
List
System.arrayCopy()
(temporary variables and byte[] arrays)
ByteArrayOutputStream out= new ByteArrayOutputStream( );
循环中
out.write(eachBytearray);
循环后
byte result[] = out.toByteArray( );
为什么需要临时数组?
System.arraycopy
用于将列表中的数组复制到目标数组中的适当位置。(显然,您需要跟踪目标数组中的偏移量。)番石榴单线:
Bytes.concat(listOfByteArray.toArray(new byte[0][]));
或更长一点(toArray
在较短的版本中保留一个字节数组分配)
Bytes.concat(listOfByteArray.toArray(new byte[listOfByteArray.size()][]));
这很容易从头开始编写:
int length = 0;
for (byte[] ba : listOfByteArrays) {
length += ba.length
}
byte[] total = new byte[length];
int index = 0;
for (byte[] ba : listOfByteArrays) {
for (byte b : ba) {
total[index++] = b;
}
}
total
是所需的字节数组。
我会循环列表并总结列表中数组的长度。创建一个包含所有内容的 byte[]。使用 System.arrayCopy() 循环并复制到适当的索引中。
我不认为 3rd 方库仅用于您所描述的事情。
您似乎知道如何编写代码,所以我将省略示例代码。