Menukar Antara Array dan Set di Java

1. Gambaran keseluruhan

Dalam artikel pendek ini kita akan melihat penukaran antara array dan Set - pertama menggunakan java biasa, kemudian Jambu dan perpustakaan Commons Collections dari Apache.

Artikel ini adalah sebahagian daripada siri "Java - Back to Basic" di Baeldung.

2. Tukarkan Array ke Set

2.1. Menggunakan Java Plain

Mari kita lihat bagaimana mengubah susunan ke Set menggunakan Java biasa :

@Test public void givenUsingCoreJavaV1_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set targetSet = new HashSet(Arrays.asList(sourceArray)); }

Sebagai alternatif, Set boleh dibuat terlebih dahulu dan kemudian diisi dengan elemen array:

@Test public void givenUsingCoreJavaV2_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set targetSet = new HashSet(); Collections.addAll(targetSet, sourceArray); }

2.2. Menggunakan Jambu Batu Google

Seterusnya, mari kita lihat penukaran Jambu dari array ke Set :

@Test public void givenUsingGuava_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set targetSet = Sets.newHashSet(sourceArray); }

2.3. Menggunakan Koleksi Apache Commons

Akhirnya, mari lakukan penukaran menggunakan perpustakaan Koleksi Commons dari Apache:

@Test public void givenUsingCommonsCollections_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set targetSet = new HashSet(6); CollectionUtils.addAll(targetSet, sourceArray); }

3. Tukar Set ke Array

3.1. Menggunakan Java Plain

Sekarang mari kita lihat kebalikannya - menukar Set yang ada menjadi array :

@Test public void givenUsingCoreJava_whenSetConvertedToArray_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); Integer[] targetArray = sourceSet.toArray(new Integer[0]); }

Perhatikan bahawa toArray (T baru [0]) adalah kaedah yang lebih disukai untuk menggunakan kaedah berbanding toArray (ukuran baru [ukuran]) . Seperti yang dibuktikan oleh Aleksey Shipilëv dalam catatan blognya, nampaknya lebih pantas, lebih selamat, dan lebih bersih.

3.2. Menggunakan Jambu Batu

Seterusnya - penyelesaian Jambu Batu:

@Test public void givenUsingGuava_whenSetConvertedToArray_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); int[] targetArray = Ints.toArray(sourceSet); }

Perhatikan bahawa kami menggunakan Ints API dari Jambu, jadi penyelesaian ini khusus untuk jenis data yang kami kerjakan.

4. Kesimpulan

Pelaksanaan semua contoh dan coretan kod ini dapat dilihat di Github - ini adalah projek berasaskan Maven, jadi mudah diimport dan dijalankan sebagaimana adanya.