1. Gambaran keseluruhan
Dalam artikel pendek ini, kita akan melihat penukaran antara Daftar dan Set - dimulai dengan Plain Java, menggunakan Guava dan perpustakaan Apache Commons Collections, dan akhirnya, dengan Java 10.
Artikel ini adalah sebahagian daripada siri "Java - Back to Basic" di Baeldung.
2. Tukar Daftar ke Set
2.1. Dengan Java Plain
Mari kita mulakan dengan menukar dari Daftar ke Set menggunakan Java :
public void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() { List sourceList = Arrays.asList(0, 1, 2, 3, 4, 5); Set targetSet = new HashSet(sourceList); }
Seperti yang anda lihat, proses penukaran adalah selamat dari jenis dan mudah - kerana pembangun setiap koleksi menerima koleksi lain sebagai sumber.
2.2. Dengan Jambu Batu
Mari lakukan penukaran yang sama menggunakan Jambu Batu:
public void givenUsingGuava_whenListConvertedToSet_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = Sets.newHashSet(sourceList); }
2.3. Dengan Koleksi Apache Commons
Seterusnya, mari kita gunakan API Koleksi Commons untuk menukar antara Daftar dan Set :
public void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = new HashSet(6); CollectionUtils.addAll(targetSet, sourceList); }
2.4. Dengan Java 10
Satu pilihan tambahan adalah menggunakan kaedah kilang statik Set.copyOf yang diperkenalkan di Java 10:
public void givenUsingJava10_whenListConvertedToSet_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = Set.copyOf(sourceList); }
Perhatikan, bahawa Set yang dibuat dengan cara ini tidak dapat diubah.
3. Tukar Set ke Senarai
3.1. Dengan Java Plain
Sekarang mari kita lakukan penukaran terbalik - dari Set ke Senarai - menggunakan Java :
public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = new ArrayList(sourceSet); }
3.2. Dengan Jambu Batu
Dan penyelesaian Jambu Batu:
public void givenUsingGuava_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = Lists.newArrayList(sourceSet); }
Sangat serupa dengan pendekatan java, hanya dengan sedikit kod pendua.
3.3. Dengan Koleksi Apache Commons
Sekarang mari kita lihat penyelesaian Koleksi Commons untuk menukar antara Set dan Senarai :
public void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = new ArrayList(6); CollectionUtils.addAll(targetList, sourceSet); }
3.4. Dengan Java 10
Akhirnya, kita dapat menggunakan List.copyOf yang telah diperkenalkan di Java 10:
public void givenUsingJava10_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = List.copyOf(sourceSet); }
Kita perlu ingat bahawa Senarai yang dihasilkan tidak dapat diubah.
4. Kesimpulan
Pelaksanaan semua contoh dan coretan kod ini dapat dilihat di GitHub - ini adalah projek berasaskan Maven, jadi mudah untuk diimport dan dijalankan sebagaimana adanya.