Powiel możliwe:
How to convert an ArrayList containing Integers to primitive int array?Konwersja ArrayList <Byte> do byte []
Jak przekonwertować ArrayList<Byte>
w byte[]
?
ArrayList.toArray()
daje mi z powrotem Byte[]
.
Powiel możliwe:
How to convert an ArrayList containing Integers to primitive int array?Konwersja ArrayList <Byte> do byte []
Jak przekonwertować ArrayList<Byte>
w byte[]
?
ArrayList.toArray()
daje mi z powrotem Byte[]
.
Po wywołaniu ToArray() można przekazać wynik do metody Apache Commons ToPrimitive:
W tym celu nadal musiałbyś użyć 'doArray()' na liście wcześniej. – Marcelo
Ta metoda pobiera tablicę jako parametr. Nie "ArrayList". Wymagałoby to konwersji z tablicy 'ArrayList'' na tablicę, a następnie konwersji tablicy' 'Byte'' na tablicę' 'byte''. Nie jestem pewien, czy byłby to najbardziej efektywny sposób na konwersję. –
@Vivien Zgadzam się, że może nie być najbardziej efektywny, ale prawdopodobnie najprostszy do napisania. Jeśli wydajność jest problemem, użyłbym odpowiedzi Michaela lub Vivien. – JustinKSU
byte[] data = new byte[list.size()];
for (int i = 0; i < data.length; i++) {
data[i] = (byte) list.get(i);
}
Należy pamiętać, że może to zająć trochę czasu, ze względu na fakt, że Byte
obiektów musi być konwertowane do byte
wartości.
Ponadto, jeśli twoja lista zawiera wartości null
, spowoduje to wyświetlenie NullPointerExcpetion
.
byte[] result = new byte[list.size()];
for(int i = 0; i < list.size(); i++) {
result[i] = list.get(i).byteValue();
}
Tak, kolekcje Java są irytujące, jeśli chodzi o prymitywnych typów .
brakujące nawiasy w rozmiarze() – nick
Nie przychodzi na myśl żadna wbudowana metoda. Jednak kodowania jeden up jest dość prosta:
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;
}
Zauważ, że to daje NullPointerException
jeśli in
jest null
lub jeśli zawiera nulls
. To całkiem oczywiste, jak zmienić tę funkcję, jeśli potrzebujesz innego zachowania.
ArrayList to najbardziej nieefektywny sposób przechowywania Bajtów. Jeśli nie wiesz, ile bajtów będzie używało ByteArrayOutputStream z write() i toByteArray(), nie używaj List , jeśli możesz tego uniknąć. –