web-dev-qa-db-fra.com

Convertir ArrayList <Byte> en un octet []

Duplicata possible:
Comment convertir une ArrayList contenant des entiers en tableau int primitif?

Comment convertir un ArrayList<Byte> En un byte[]?

ArrayList.toArray() me rend un Byte[].

23
fulmicoton

Après avoir appelé toArray (), vous pouvez passer le résultat dans la méthode Apache Commons toPrimitive:

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

9
JustinKSU
byte[] result = new byte[list.size()];
for(int i = 0; i < list.size(); i++) {
    result[i] = list.get(i).byteValue();
}

Oui, les collections de Java sont ennuyeuses en ce qui concerne les types primitifs.

11
Michael Borgwardt

Aucune méthode intégrée ne vient à l'esprit. Cependant, en coder un est assez simple:

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

Notez que cela vous donnera un NullPointerException si in est null ou s'il contient nulls. Il est assez évident de modifier cette fonction si vous avez besoin d'un comportement différent.

6
NPE
byte[] data = new byte[list.size()];
for (int i = 0; i < data.length; i++) {
    data[i] = (byte) list.get(i);
}

Veuillez noter que cela peut prendre un certain temps en raison du fait que les objets Byte doivent être convertis en valeurs byte.

De plus, si votre liste contient des valeurs de null, cela lancera un NullPointerExcpetion.

2
Vivien Barousse