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
IntStream
dengan memetakan setiap elemen ke dirinya sendiri (fungsi identitas), menghapus kotak int
nilai yang disimpan oleh setiap Integer
objek (dilakukan secara otomatis sejak Java 5)
- mendapatkan array
int
dengan menelepontoArray
Anda juga dapat secara eksplisit menelepon intValue
melalui referensi metode, yaitu:
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
Perlu juga disebutkan bahwa Anda bisa mendapatkan NullPointerException
jika Anda memiliki null
referensi 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]