Mengonversi Antara Daftar dan Kumpulan di Java

1. Ikhtisar

Dalam artikel singkat ini, kita akan melihat konversi antara List dan Set - dimulai dengan Java Biasa, menggunakan Guava dan pustaka Koleksi Apache Commons, dan terakhir, dengan Java 10.

Artikel ini adalah bagian dari seri “Java - Kembali ke Dasar” di Baeldung.

2. Ubah Daftar untuk Ditetapkan

2.1. Dengan Plain Java

Mari kita mulai dengan mengubah dari List 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 konversinya aman untuk jenis dan langsung - karena konstruktor setiap koleksi menerima koleksi lain sebagai sumber.

2.2. W engan Jambu

Mari lakukan konversi yang sama menggunakan Jambu Biji:

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

Selanjutnya, mari gunakan Commons Collections API untuk mengonversi antara List 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 opsi tambahan adalah menggunakan metode pabrik statis 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, bahwa Set yang dibuat dengan cara ini tidak dapat dimodifikasi.

3. Ubah Setel ke Daftar

3.1. Dengan Plain Java

Sekarang mari kita lakukan konversi terbalik - dari Set ke Daftar - 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 Biji

Dan solusi Jambu Biji:

public void givenUsingGuava_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = Lists.newArrayList(sourceSet); } 

Sangat mirip dengan pendekatan java, hanya dengan sedikit kode duplikat.

3.3. Dengan Koleksi Apache Commons

Sekarang mari kita lihat solusi Koleksi Commons untuk mengonversi antara Set dan List :

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

Terakhir, kita bisa 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); }

Kami perlu mengingat bahwa Daftar yang dihasilkan tidak dapat diubah.

4. Kesimpulan

Penerapan semua contoh dan cuplikan kode ini dapat ditemukan di GitHub - ini adalah proyek berbasis Maven, jadi semestinya mudah untuk mengimpor dan menjalankannya apa adanya.