Tampaknya sedikit terlambat tetapi ini adalah dua sen saya. Kita tidak dapat memiliki List<int>
sebagai int
adalah tipe primitif sehingga kita hanya dapat memiliki List<Integer>
.
Java 8 (int array)
int[] ints = new int[] {1,2,3,4,5};
List<Integer> list11 =Arrays.stream(ints).boxed().collect(Collectors.toList());
Java 8 dan yang lebih baru (array Integer)
Integer[] integers = new Integer[] {1,2,3,4,5};
List<Integer> list21 = Arrays.asList(integers); // returns a fixed-size list backed by the specified array.
List<Integer> list22 = new ArrayList<>(Arrays.asList(integers)); // good
List<Integer> list23 = Arrays.stream(integers).collect(Collectors.toList()); //Java 8 only
Perlu ArrayList dan bukan Daftar?
Jika kita menginginkan implementasi spesifik dari List
eg ArrayList
maka kita dapat menggunakan toCollection
sebagai:
ArrayList<Integer> list24 = Arrays.stream(integers)
.collect(Collectors.toCollection(ArrayList::new));
Mengapa list21
tidak dapat dimodifikasi secara struktural?
Ketika kita menggunakan Arrays.asList
ukuran daftar yang dikembalikan adalah tetap karena daftar yang dikembalikan bukan java.util.ArrayList
, tetapi kelas statis pribadi yang didefinisikan di dalamnya java.util.Arrays
. Jadi jika kita menambah atau menghapus elemen dari daftar yang dikembalikan, sebuah UnsupportedOperationException
akan dilempar. Jadi kita harus pergi list22
ketika kita ingin mengubah daftar. Jika kita memiliki Java8 maka kita juga bisa menggunakannya list23
.
Agar jelas list21
dapat dimodifikasi dalam arti bahwa kita dapat memanggil list21.set(index,element)
tetapi daftar ini mungkin tidak dimodifikasi secara struktural yaitu tidak dapat menambah atau menghapus elemen dari daftar. Anda juga dapat memeriksa pertanyaan ini .
Jika kita menginginkan daftar yang tidak dapat diubah maka kita dapat membungkusnya sebagai:
List<Integer> list 22 = Collections.unmodifiableList(Arrays.asList(integers));
Hal lain yang perlu diperhatikan adalah bahwa metode ini Collections.unmodifiableList
mengembalikan tampilan daftar yang ditentukan yang tidak dapat dimodifikasi. Koleksi tampilan yang tidak dapat dimodifikasi adalah koleksi yang tidak dapat dimodifikasi dan juga merupakan tampilan ke koleksi dukungan. Perhatikan bahwa perubahan pada koleksi dukungan mungkin masih dimungkinkan, dan jika terjadi, mereka dapat dilihat melalui tampilan yang tidak dapat dimodifikasi.
Kita dapat memiliki daftar yang benar-benar abadi di Jawa 9 dan 10.
Daftar yang benar-benar tidak dapat berubah
Java 9:
String[] objects = {"Apple", "Ball", "Cat"};
List<String> objectList = List.of(objects);
Java 10 (Daftar Benar-Benar Tidak Berubah) dalam dua cara:
List.copyOf(Arrays.asList(integers))
Arrays.stream(integers).collect(Collectors.toUnmodifiableList());
Periksa juga jawaban saya ini untuk informasi lebih lanjut.
Arrays.asList(new int[] { 1, 2, 3 })
:; pasti tidak mengkompilasi di Jawa 1.4.2, karena seorangint[]
yang tidak seorangObject[]
.