[英]Creating a byte[] from a List<Byte>
執行此操作的最有效方法是什么?
byte[] byteArray = new byte[byteList.size()];
for (int index = 0; index < byteList.size(); index++) {
byteArray[index] = byteList.get(index);
}
您可能不喜歡它,但這是創建一個 Genuine™ Array® of byte
的唯一方法。
正如評論中所指出的,還有其他方法。 但是,這些方法都沒有繞過 a) 創建數組和 b) 分配每個元素。 這個使用 迭代器。
byte[] byteArray = new byte[byteList.size()];
int index = 0;
for (byte b : byteList) {
byteArray[index++] = b;
}
toArray()
方法聽起來是個不錯的選擇。
更新:雖然,正如人們所指出的,這適用於“盒裝”值。 所以一個普通的for
循環看起來也是一個非常好的選擇。
使用Bytes . toArray (Collection<Byte>)
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.