Saltar al contenido

Creando un byte[] de una lista

Solución:

byte[] byteArray = new byte[byteList.size()];
for (int index = 0; index < byteList.size(); index++) {
    byteArray[index] = byteList.get(index);
}

Puede que no le guste, pero esa es la única forma de crear un Genuine ™ Array® de byte.

Como se señaló en los comentarios, hay otras formas. Sin embargo, ninguna de esas formas evita a) crear una matriz yb) asignar cada elemento. Éste usa un iterador.

byte[] byteArray = new byte[byteList.size()];
int index = 0;
for (byte b : byteList) {
    byteArray[index++] = b;
}

los toArray() El método parece una buena elección.

Actualizar: Aunque, como la gente ha señalado amablemente, esto funciona con valores “encuadrados”. Entonces un llano for-loop también parece una muy buena elección.

Utilizando Bytes.toArray(Collection<Byte>) (de la biblioteca Guava de Google).

Ejemplo:

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));
    }
}

O de manera similar, usando PCJ:

import bak.pcj.Adapter;

// ...

byte[] byteArray = Adapter.asBytes(byteList).toArray();
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *