簡體   English   中英

從列表創建字節 []<Byte>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM