Memulai HashSet pada Saat Konstruksi

1. Ikhtisar

Dalam tutorial singkat ini, kami akan memperkenalkan berbagai metode inisialisasi HashSet dengan nilai, pada saat pembuatannya .

Jika Anda ingin menjelajahi fitur-fitur HashSet , lihat artikel inti ini di sini.

Kami akan menyelami metode bawaan Java sejak Java 5 dan sebelum diikuti oleh mekanisme baru yang diperkenalkan sejak Java 8 . Kami juga akan melihat metode utilitas khusus dan akhirnya menjelajahi fitur yang disediakan oleh perpustakaan koleksi pihak ketiga , Google Guava khususnya.

Jika Anda beruntung telah bermigrasi ke JDK9 +, Anda cukup menggunakan metode pabrik pengumpulan.

2. Metode Bawaan Java

Mari kita mulai dengan memeriksa tiga mekanisme bawaan yang tersedia sejak Java 5 atau sebelumnya .

2.1. Menggunakan Contoh Koleksi Lain

Kita bisa melewatkan contoh yang ada dari koleksi lain untuk menginisialisasi Set . Dalam contoh di bawah ini, kami menggunakan Daftar yang dibuat sebaris :

Set set = new HashSet(Arrays.asList("a", "b", "c"));

2.2. Menggunakan Kelas Anonim

Dalam pendekatan lain, kita dapat menggunakan kelas anonim untuk menambahkan elemen ke HashSet .

Perhatikan penggunaan kawat gigi keriting ganda. Pendekatan ini secara teknis sangat mahal karena membuat kelas anonim setiap kali dipanggil.

Jadi tergantung pada seberapa sering kita perlu menginisialisasi Set, kita dapat mencoba untuk menghindari penggunaan pendekatan ini:

Set set = new HashSet(){{ add("a"); add("b"); add("c"); }};

2.3. Menggunakan Metode Collections Utility Sejak Java 5

Kelas utilitas Koleksi Java menyediakan metode bernama singleton untuk membuat Set dengan satu elemen . The Set misalnya dibuat dengan tunggal metode adalah kekal arti bahwa kita tidak dapat menambahkan nilai lebih untuk itu.

Ada situasi terutama dalam pengujian unit di mana kita perlu membuat Set dengan satu nilai:

Set set = Collections.singleton("a");

3. Menentukan Metode Utilitas Kustom

Kita dapat mendefinisikan metode akhir statis seperti di bawah ini. Metode ini menerima argumen variabel .

Menggunakan Collections.addAll yang menerima objek koleksi dan larik nilai adalah yang terbaik di antara yang lain karena biaya penyalinan yang rendah.

The metode adalah menggunakan obat generik sehingga kami dapat melewati nilai-nilai dari jenis apa pun:

public static final  Set newHashSet(T... objs) { Set set = new HashSet(); Collections.addAll(set, objs); return set; }

Metode utilitas dapat digunakan dalam kode kami seperti di bawah ini.

Set set = newHashSet("a","b","c");

4. Menggunakan Stream Sejak Java 8

Dengan diperkenalkannya API Stream di Java 8, kami memiliki opsi tambahan. Kita dapat menggunakan Stream dengan Kolektor seperti yang ditunjukkan pada kode di bawah ini:

Set set = Stream.of("a", "b", "c") .collect(Collectors.toCollection(HashSet::new));

5. Menggunakan Perpustakaan Koleksi Pihak Ketiga

Ada beberapa perpustakaan koleksi pihak ketiga termasuk Google Guava, Koleksi Apache Commons, dan Koleksi Eclipse hanya untuk beberapa nama.

Pustaka ini menyediakan metode utilitas yang mudah digunakan untuk menginisialisasi koleksi seperti Set. Karena Google Guava adalah salah satu yang paling umum digunakan di sini, kami memiliki contoh darinya. Guava memiliki metode mudah untuk objek Set yang bisa berubah dan tidak bisa diubah :

Set set = Sets.newHashSet("a", "b", "c");

Demikian pula, Guava memiliki kelas utilitas untuk membuat instance Set yang tidak dapat diubah , seperti yang dapat kita lihat pada contoh di bawah.

Set set = ImmutableSet.of("a", "b", "c");

6. Kesimpulan

Sebagai kesimpulan, kami melihat banyak cara di mana HashSet dapat diinisialisasi saat dibuat. Pendekatan ini tidak selalu mencakup semua cara yang mungkin dengan cara apa pun. Itu hanya upaya untuk menampilkan cara yang paling umum.

Salah satu pendekatan yang tidak tercakup di sini bisa menggunakan pembuat objek untuk membuat Set .

Seperti biasa, contoh kode yang berfungsi tersedia di GitHub.