2011-07-28 30 views

Respuesta

5

Después de llamar toArray() se puede pasar el resultado en el método de Apache Commons toPrimitive:

http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/ArrayUtils.html#toPrimitive(java.lang.Byte[])>

+0

Para esto todavía tendría que usar 'toArray()' en la lista de antemano. – Marcelo

+1

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. –

+0

@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

2
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.

8
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 .

+0

soportes faltantes en tamaño() – nick

4

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 innull o si contiene nulls. Es bastante obvio cómo cambiar esta función si necesita un comportamiento diferente.