1. Wadah dan koleksi
Wadah atau koleksi adalah kelas yang memungkinkan Anda menyimpan dan memproses beberapa objek sekaligus. Anda sudah mengetahui dua jenis wadah: array dan daftar.
Java memiliki beberapa lusin koleksi, yang masing-masing menyimpan elemen dengan caranya sendiri-sendiri. Berikut ini beberapa di antaranya:
| Koleksi | Kelas | Keterangan |
|---|---|---|
|
|
Daftar |
|
Daftar tertaut | |
|
Vektor | |
|
Tumpukan | |
|
|
Mengatur |
|
||
|
||
|
|
Antre |
|
||
|
|
Peta/Kamus |
|
||
|
||
Nama-nama agak ambigu di sini. Di sebagian besar bahasa pemrograman, semua struktur data ini disebut koleksi, tetapi tidak di Java. Di Java, beberapa kelas ini mengimplementasikan antarmuka Collection, sementara yang lain tidak.
Dengan demikian, koleksi dibagi menjadi koleksi dalam arti luas dan koleksi dalam arti sempit (hanya yang mengimplementasikan Collectionantarmuka).
Jadi untuk menghindari kebingungan, ketika kita berbicara tentang koleksi yang kita maksudkan dalam arti kata yang sempit, yaitu kelas yang mengimplementasikan Collectionantarmuka. , Listdan Settype Queueadalah semua koleksi. Koleksi dalam arti luas umumnya disebut container . Ini termasuk tipe like Mapdan array.
2. HashSetkoleksi
Kelas HashSetadalah koleksi set yang khas. Dalam banyak hal, ini mirip dengan ArrayListkelas. Dalam beberapa hal, ini adalah versi yang lebih primitif.
Anda dapat membuat HashSetobjek menggunakan pernyataan seperti:
HashSet<Type> name = new HashSet<Type>();
Dimana Typejenis elemen yang akan kita simpan di HashSetcollection.
Kelas HashSetmemiliki metode seperti ini:
| metode | Keterangan |
|---|---|
|
Menambahkan valueelemen ke koleksi |
|
Menghapus valueelemen dari koleksi. Mengembalikan truejika ada elemen seperti itu |
|
Memeriksa apakah koleksi memiliki valueelemen |
|
Membersihkan koleksi, menghapus semua elemen |
|
Mengembalikan jumlah elemen dalam koleksi |
Berikut adalah contoh penggunaan himpunan.
Mari kita menulis sebuah program yang mengucapkan selamat tinggal kepada pengguna jika dia menyapa. Agar lebih menarik, kami akan memberikan program kami kemampuan untuk memahami "halo" dalam beberapa bahasa.
| Kode | Catatan |
|---|---|
|
Buat HashSetobjek yang menyimpan Stringelemen. Kami menambahkan salam dalam berbagai bahasa ke setvariabel. Baca baris dari konsol. Jika utasnya ada di rangkaian salam kami, maka kami mengucapkan selamat tinggal. |
3. Tetapkan
Koleksi ini Setdirancang untuk menampung sekumpulan elemen. Itu sebabnya disebut Set(set). Koleksi ini memiliki tiga fitur.
Operasi pada himpunan
Hanya ada tiga hal yang dapat Anda lakukan dengan set: menambahkan elemen ke set, menghapus elemen dari set, dan memeriksa apakah set berisi elemen tertentu. Itu dia.
Tidak ada pesanan
Elemen dalam koleksi ini tidak memiliki indeks. Anda tidak bisa mendapatkan elemen dengan indeks, atau menulis nilai ke koleksi pada indeks tertentu. Satu set tidak memiliki get()dan set()metode.
Elemen unik
Semua elemen dalam satu set adalah unik. Tidak seperti daftar, satu set hanya dapat berisi satu contoh elemen. Objek ada di set atau tidak — tidak ada opsi ketiga. Anda tidak dapat menambahkan hitam tiga kali ke satu set warna. Itu ada atau tidak.
Menemukan elemen
Saat Anda menambahkan elemen baru, menghapus elemen, atau memeriksa apakah ada elemen dalam kumpulan, pencarian elemen dilakukan dalam metode. Elemen yang diteruskan dibandingkan dengan elemen koleksi terlebih dahulu dengan hashCode(), lalu jika nilainya dikembalikan dengan hashCode()cocok, dengan equals().
4. Membandingkan koleksi: ListvsSet
Mari kita bandingkan dua jenis koleksi: Listdan SetKami akan melihat perbedaan utama ketika yang satu lebih menguntungkan daripada yang lain, dan sebaliknya.
Mari kita coba bandingkan List dan Set menggunakan mainan sebagai contoh.
ListKoleksi (daftar) itu seperti seperangkat mainan yang disusun di sepanjang dinding di ruang bermain. Anda dapat menambahkan mainan ke akhir daftar. Jika memang perlu, Anda juga bisa memasukkannya di tengah (tetapi beberapa mainan yang ada harus dipindahkan).
Setiap mainan memiliki indeks. Anda dapat merujuk mainan berdasarkan indeksnya dan juga mengganti mainan nomor 7 dengan mainan nomor 13. Anda dapat menghapus mainan nomor 4 dari daftar. Terakhir, Anda dapat mempelajari indeks setiap mainan dalam daftar.
Koleksi Set(set) lebih seperti tumpukan mainan di tengah lantai. Anda dapat menambahkan mainan ke dalam tumpukan, dan Anda dapat mengeluarkan mainan dari tumpukan tersebut. Tapi mainan ini tidak memiliki indeks tetap yang terkait dengannya.
Atau misalkan Anda sedang memilih mainan untuk ulang tahun anak Anda. Pertama, Anda memikirkan apakah dia sudah memiliki mainan itu. Semua mainan yang sudah dia miliki membentuk satu set mainan yang tidak akan Anda pilih untuk dibeli.
Dari sudut pandang ini, Anda dapat melihat bahwa urutan mainan dalam satu set "mainan yang sudah ada" tidak masalah, juga tidak masalah jika anak laki-laki yang berulang tahun memiliki dua contoh mainan tertentu. Anda tidak tertarik dengan urutan atau nomor setiap mainan. Yang Anda pedulikan adalah mengetahui setiap mainan unik yang ada di set.
Untuk kasus seperti ini, Anda membutuhkan koleksinya Set. Implementasinya yang paling populer adalah HashSetkelas.
GO TO FULL VERSION