Bagaimana cara saya konversikan int[]
ke List<Integer>
dalam Java?
Tentu saja, saya tertarik pada jawaban lain selain melakukannya dalam satu lingkaran, item demi item. Tetapi jika tidak ada jawaban lain, saya akan memilih yang terbaik untuk menunjukkan fakta bahwa fungsi ini bukan bagian dari Jawa.
java
arrays
collections
boxing
autoboxing
pupeno
sumber
sumber
Jawaban:
Tidak ada jalan pintas untuk mengkonversi dari
int[]
keList<Integer>
karenaArrays.asList
tidak berurusan dengan tinju dan hanya akan membuatList<int[]>
yang bukan yang Anda inginkan. Anda harus membuat metode utilitas.sumber
new ArrayList<Integer>() {{ for (int i : ints) add(i); }}
Streaming
Di Java 8 Anda bisa melakukan ini
sumber
Juga dari perpustakaan jambu biji ... com.google.common.primitive.Ints:
sumber
Arrays.asList tidak akan berfungsi seperti yang diharapkan oleh beberapa jawaban lainnya.
Kode ini tidak akan membuat daftar 10 bilangan bulat. Ini akan mencetak 1 , bukan 10 :
Ini akan membuat daftar bilangan bulat:
Jika Anda sudah memiliki array int, tidak ada cara cepat untuk mengkonversi, Anda lebih baik dengan loop.
Di sisi lain, jika array Anda memiliki Object, bukan primitif di dalamnya, Arrays.asList akan berfungsi:
sumber
Saya akan menambahkan jawaban lain dengan metode yang berbeda; tidak ada loop tetapi kelas anonim yang akan memanfaatkan fitur autoboxing:
sumber
set
metode dan sekarang saya bahkan dapat mengurutkan array ...Sepotong kode terkecil adalah:
dari mana ArrayUtils berasal dari commons-lang :)
sumber
ArrayUtils
bahwa ini adalah perpustakaan yang relatif besar untuk aplikasi AndroidArrayUtils.toPrimitive(...)
adalah kuncinya.Di Java 8 dengan streaming:
atau dengan Kolektor
sumber
Di Jawa 8:
sumber
Jika Anda menggunakan java 8, kita dapat menggunakan API aliran untuk mengubahnya menjadi daftar.
Anda juga dapat menggunakan IntStream untuk mengonversi juga.
Ada perpustakaan eksternal lain seperti jambu biji dan apache commons juga tersedia untuk mengubahnya.
Bersulang.
sumber
Juga patut untuk memeriksa laporan bug ini , yang ditutup dengan alasan "Bukan cacat" dan teks berikut:
"Autoboxing seluruh array bukanlah perilaku yang ditentukan, untuk alasan yang baik. Ini bisa mahal untuk array besar."
sumber
coba kelas ini:
Kasus cobaan:
sumber
Tembakan terbaik:
Contoh:
sumber
Jika Anda terbuka untuk menggunakan perpustakaan pihak ketiga, ini akan berfungsi di Eclipse Collections :
Catatan: Saya pengendara untuk Eclipse Collections .
sumber
sumber
Bagaimana dengan ini:
int[] a = {1,2,3}; Integer[] b = ArrayUtils.toObject(a); List<Integer> c = Arrays.asList(b);
sumber
Ini solusinya:
Keluaran:
sumber
Berikut adalah kemungkinan lain, lagi dengan Java 8 Streams:
sumber
Berikut ini adalah cara umum untuk mengkonversi array ke ArrayList
Pemakaian
sumber
lihat ini
sumber