thể trùng lặp:
How to convert an ArrayList containing Integers to primitive int array?Chuyển đổi ArrayList <Byte> thành một byte []
Làm thế nào để chuyển đổi một ArrayList<Byte>
thành một byte[]
?
ArrayList.toArray()
cho tôi quay lại Byte[]
.
thể trùng lặp:
How to convert an ArrayList containing Integers to primitive int array?Chuyển đổi ArrayList <Byte> thành một byte []
Làm thế nào để chuyển đổi một ArrayList<Byte>
thành một byte[]
?
ArrayList.toArray()
cho tôi quay lại Byte[]
.
Sau khi gọi toArray(), bạn có thể vượt qua kết quả vào phương pháp Apache Commons toPrimitive:
Đối với điều này, bạn sẽ vẫn phải sử dụng 'toArray()' trong danh sách trước. – Marcelo
Phương thức này lấy một mảng làm tham số. Không phải là một '' ArrayList''. Nó sẽ yêu cầu chuyển đổi từ '' ArrayList'' thành một mảng, và sau đó chuyển đổi mảng '' Byte'' thành mảng '' byte''. Không chắc chắn đó sẽ là cách hiệu quả nhất để thực hiện chuyển đổi. –
@Vivien Tôi đồng ý rằng nó có thể không hiệu quả nhất, nhưng có lẽ là cách đơn giản nhất để viết. Nếu hiệu suất là một mối quan tâm, tôi sẽ sử dụng câu trả lời của Michael hoặc Vivien. – JustinKSU
byte[] data = new byte[list.size()];
for (int i = 0; i < data.length; i++) {
data[i] = (byte) list.get(i);
}
Xin lưu ý rằng điều này có thể mất một thời gian do thực tế rằng Byte
đối tượng cần phải được chuyển đổi sang byte
giá trị.
Ngoài ra, nếu danh sách của bạn chứa null
giá trị, điều này sẽ ném một số NullPointerExcpetion
.
byte[] result = new byte[list.size()];
for(int i = 0; i < list.size(); i++) {
result[i] = list.get(i).byteValue();
}
Yeah, các bộ sưu tập của Java là gây phiền nhiễu khi nói đến các kiểu dữ liệu .
thiếu dấu ngoặc đơn ở kích thước() – nick
Không có phương pháp tích hợp nào. Tuy nhiên, mã hóa lên khá đơn giản:
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;
}
Lưu ý rằng điều này sẽ cung cấp cho bạn một NullPointerException
nếu in
là null
hoặc nếu nó có chứa nulls
. Nó khá rõ ràng làm thế nào để thay đổi chức năng này nếu bạn cần hành vi khác nhau.
ArrayList là cách hiệu quả nhất để lưu trữ Byte. Nếu bạn không biết có bao nhiêu byte sẽ sử dụng ByteArrayOutputStream với write() và toByteArray(), đừng sử dụng List nếu bạn có thể tránh được nó. –