最有效的方法是什么?
答案 0 :(得分:13)
byte[] byteArray = new byte[byteList.size()];
for (int index = 0; index < byteList.size(); index++) {
byteArray[index] = byteList.get(index);
}
您可能不喜欢它,但这是创建byte
的Genuine™Array®的唯一方法。
正如评论中指出的,还有其他方法。然而,这些方法都没有绕过a)创建数组和b)分配每个元素。这个使用iterator。
byte[] byteArray = new byte[byteList.size()];
int index = 0;
for (byte b : byteList) {
byteArray[index++] = b;
}
答案 1 :(得分:4)
toArray()
方法听起来是个不错的选择。
更新:尽管如此,正如大家所指出的那样,这与“盒装”值一起使用。所以简单的for
- 循环看起来也是一个非常好的选择。
答案 2 :(得分:2)
使用Bytes.toArray(Collection<Byte>)
(来自Google的Guava库。)
示例:
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));
}
}
或类似地,使用PCJ:
import bak.pcj.Adapter;
// ...
byte[] byteArray = Adapter.asBytes(byteList).toArray();