Ответ 1
После вызова метода toArray() вы можете передать результат в метод Apache Commons toPrimitive:
Возможный дубликат:
Как преобразовать ArrayList, содержащий целые числа в примитивный массив int?
Как преобразовать ArrayList<Byte>
в byte[]
?
ArrayList.toArray()
возвращает a byte[]
.
После вызова метода toArray() вы можете передать результат в метод Apache Commons toPrimitive:
byte[] result = new byte[list.size()];
for(int i = 0; i < list.size(); i++) {
result[i] = list.get(i).byteValue();
}
Да, коллекции Java раздражают, когда дело доходит до примитивных типов.
На встроенный метод не приходит в голову. Однако кодирование одной строки довольно просто:
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
is null
или если он содержит nulls
. Очень очевидно, как изменить эту функцию, если вам нужно другое поведение.
byte[] data = new byte[list.size()];
for (int i = 0; i < data.length; i++) {
data[i] = (byte) list.get(i);
}
Обратите внимание, что это может занять некоторое время из-за того, что объекты Byte
должны быть преобразованы в значения Byte
.
Кроме того, если ваш список содержит значения null
, это вызовет NullPointerExcpetion
.