可能重複:
How to convert an ArrayList containing Integers to primitive int array?轉換ArrayList的<Byte>成一個byte []
如何將ArrayList<Byte>
轉換成byte[]
?
ArrayList.toArray()
讓我回到Byte[]
。
可能重複:
How to convert an ArrayList containing Integers to primitive int array?轉換ArrayList的<Byte>成一個byte []
如何將ArrayList<Byte>
轉換成byte[]
?
ArrayList.toArray()
讓我回到Byte[]
。
調用指定者()後,你可以通過結果到Apache共享toPrimitive方法:
byte[] data = new byte[list.size()];
for (int i = 0; i < data.length; i++) {
data[i] = (byte) list.get(i);
}
請注意,這可能需要一些時間,由於該Byte
對象需要被轉換爲byte
值的事實。
此外,如果您的列表包含null
值,則會拋出NullPointerExcpetion
。
byte[] result = new byte[list.size()];
for(int i = 0; i < list.size(); i++) {
result[i] = list.get(i).byteValue();
}
呀,Java的集合是惱人的,當涉及到基本類型。
大小()中缺少括號 – nick
沒有想到內置的方法。然而,編碼一升上來是非常簡單的:
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;
}
注意,這會給你一個NullPointerException
如果in
是null
或者如果它包含nulls
。如果你需要不同的行爲,如何改變這個功能是非常明顯的。
ArrayList是存儲字節的最低效方式。如果您不知道將使用ByteArrayOutputStream與write()和toByteArray()使用多少個字節,請不要使用列表,前提是您完全可以避免它。 –