Duplicar posible:
How to convert an ArrayList containing Integers to primitive int array?Convertir ArrayList <Byte> en un byte []
Cómo convertir un ArrayList<Byte>
en un byte[]
?
ArrayList.toArray()
me devuelve un Byte[]
.
Duplicar posible:
How to convert an ArrayList containing Integers to primitive int array?Convertir ArrayList <Byte> en un byte []
Cómo convertir un ArrayList<Byte>
en un byte[]
?
ArrayList.toArray()
me devuelve un Byte[]
.
Después de llamar toArray() se puede pasar el resultado en el método de Apache Commons toPrimitive:
Para esto todavía tendría que usar 'toArray()' en la lista de antemano. – Marcelo
Este método toma una matriz como parámetro. No es una '' ArrayList''. Se requeriría la conversión de la '' ArrayList'' a una matriz, y luego la conversión de la matriz '' Byte'' a la matriz '' byte''. No estoy seguro de que sea la forma más eficiente de hacer la conversión. –
@Vivien Estoy de acuerdo que puede no ser el más eficiente, pero probablemente el más simple de escribir. Si el rendimiento es una preocupación, usaría la respuesta de Michael o Vivien. – JustinKSU
byte[] data = new byte[list.size()];
for (int i = 0; i < data.length; i++) {
data[i] = (byte) list.get(i);
}
Tenga en cuenta que esto puede tomar algún tiempo debido al hecho de que los objetos Byte
necesita ser convertida a byte
valores.
Además, si su lista contiene valores de null
, arrojará un NullPointerExcpetion
.
byte[] result = new byte[list.size()];
for(int i = 0; i < list.size(); i++) {
result[i] = list.get(i).byteValue();
}
Sí, colecciones de Java son molesto cuando se trata de tipos primitivos .
soportes faltantes en tamaño() – nick
No viene a la mente ningún método incorporado. Sin embargo, la codificación de un gol arriba es bastante sencillo:
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;
}
Tenga en cuenta que esto le dará una NullPointerException
si es in
null
o si contiene nulls
. Es bastante obvio cómo cambiar esta función si necesita un comportamiento diferente.
ArrayList es la forma más ineficiente de almacenar bytes que hay. Si no sabe cuántos bytes tendrá ByteArrayOutputStream con write() y toByteArray(), no use List si puede evitarlo. –