Menukar Antara Daftar dan Set di Java

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.