Jika Anda menggunakan java-8 ada juga cara lain untuk melakukan ini.
int[] arr = list.stream().mapToInt(i -> i).toArray();
Apa yang dilakukannya adalah:
- dapatkan
Stream<Integer>dari daftar
- memperoleh
IntStreamdengan memetakan setiap elemen ke dirinya sendiri (fungsi identitas), menghapus kotak intnilai yang disimpan oleh setiap Integerobjek (dilakukan secara otomatis sejak Java 5)
- mendapatkan array
intdengan menelepontoArray
Anda juga dapat secara eksplisit menelepon intValuemelalui referensi metode, yaitu:
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
Perlu juga disebutkan bahwa Anda bisa mendapatkan NullPointerExceptionjika Anda memiliki nullreferensi dalam daftar. Ini bisa dengan mudah dihindari dengan menambahkan kondisi penyaringan ke pipa aliran seperti ini:
//.filter(Objects::nonNull) also works
int[] arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray();
Contoh:
List<Integer> list = Arrays.asList(1, 2, 3, 4);
int[] arr = list.stream().mapToInt(i -> i).toArray(); //[1, 2, 3, 4]
list.set(1, null); //[1, null, 3, 4]
arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray(); //[1, 3, 4]