1. Bekas dan koleksi
Bekas atau koleksi ialah kelas yang membolehkan anda menyimpan dan memproses beberapa objek sekaligus. Anda sudah mengetahui dua jenis bekas: tatasusunan dan senarai.
Java mempunyai beberapa dozen koleksi, setiap satunya menyimpan elemen dengan cara tersendiri. Berikut adalah beberapa daripadanya:
Koleksi | Kelas | Penerangan |
---|---|---|
|
|
Senaraikan |
|
Senarai terpaut | |
|
vektor | |
|
Timbunan | |
|
|
Tetapkan |
|
||
|
||
|
|
Beratur |
|
||
|
|
Peta/Kamus |
|
||
|
Nama-nama agak samar-samar di sini. Dalam kebanyakan bahasa pengaturcaraan, semua struktur data ini dipanggil koleksi, tetapi tidak dalam Java. Di Java, beberapa kelas ini melaksanakan Collection
antara muka, manakala yang lain tidak.
Sehubungan itu, koleksi dibahagikan kepada koleksi dalam erti kata luas dan koleksi dalam erti kata sempit (hanya yang melaksanakan Collection
antara muka).
Jadi untuk mengelakkan kekeliruan, apabila kita bercakap tentang koleksi yang kita maksudkan dalam erti kata yang sempit, iaitu kelas yang melaksanakan Collection
antara muka. , List
dan Set
jenis Queue
adalah semua koleksi. Koleksi dalam erti kata luas biasanya dipanggil bekas . Ini termasuk jenis seperti Map
dan tatasusunan.
2. HashSet
koleksi
Kelas HashSet
adalah koleksi set biasa. Dalam banyak cara, ia serupa dengan ArrayList
kelas. Dalam beberapa cara, ia adalah versi yang lebih primitif.
Anda boleh membuat HashSet
objek menggunakan pernyataan seperti:
HashSet<Type> name = new HashSet<Type>();
Di manakah Type
jenis elemen yang akan kami simpan dalam HashSet
koleksi.
Kelas HashSet
mempunyai kaedah seperti ini:
Kaedah | Penerangan |
---|---|
|
Menambah value elemen pada koleksi |
|
Mengalih keluar value elemen daripada koleksi. Mengembalikan true jika terdapat elemen sedemikian |
|
Menyemak sama ada koleksi mempunyai value elemen |
|
Membersihkan koleksi, mengalih keluar semua elemen |
|
Mengembalikan bilangan elemen dalam koleksi |
Berikut ialah contoh penggunaan set.
Mari tulis program yang mengucapkan selamat tinggal kepada pengguna jika dia bertanya khabar. Untuk menjadikannya lebih menarik, kami akan memberikan program kami keupayaan untuk memahami "hello" dalam beberapa bahasa.
Kod | Catatan |
---|---|
|
Buat HashSet objek yang menyimpan String elemen. Kami menambah ucapan dalam pelbagai bahasa kepada set pembolehubah. Baca baris dari konsol. Jika rentetan dalam set ucapan kita, maka kita mengucapkan selamat tinggal. |
3. Tetapkan
Koleksi ini Set
direka untuk memegang satu set elemen. Itulah sebabnya ia dipanggil Set
(set). Koleksi ini mempunyai tiga ciri.
Operasi pada set
Terdapat hanya tiga perkara yang boleh anda lakukan dengan set: tambah elemen pada set, alih keluar elemen daripada set dan semak sama ada set mengandungi elemen tertentu. Itu sahaja.
Tiada pesanan
Elemen dalam koleksi ini tidak mempunyai indeks. Anda tidak boleh mendapatkan elemen mengikut indeks, atau menulis nilai pada koleksi pada indeks tertentu. Satu set mempunyai tiada get()
dan set()
kaedah.
Unsur unik
Semua elemen dalam satu set adalah unik. Tidak seperti senarai, set boleh mengandungi hanya satu contoh elemen. Objek sama ada dalam set atau tidak — tiada pilihan ketiga. Anda tidak boleh menambah hitam tiga kali pada set warna. Ia ada atau tidak.
Mencari elemen
Apabila anda menambah elemen baharu, alih keluar elemen atau semak sama ada unsur wujud dalam set, carian untuk elemen dilakukan dalam kaedah tersebut. Elemen yang diluluskan dibandingkan dengan elemen koleksi dahulu dengan hashCode()
, dan kemudian jika nilai dikembalikan mengikut hashCode()
padanan, oleh equals()
.
4. Membandingkan koleksi: List
vsSet
Mari kita bandingkan dua jenis koleksi: List
dan Set
Kami akan melihat perbezaan utama, apabila satu lebih berfaedah daripada yang lain, dan sebaliknya.
Mari cuba bandingkan Senarai dan Set menggunakan mainan sebagai contoh.
List
Koleksi (senarai) itu seperti satu set mainan yang disusun di sepanjang dinding di dalam bilik permainan. Anda boleh menambah mainan pada penghujung senarai. Jika anda benar-benar perlu, anda juga boleh memasukkannya di tengah (tetapi beberapa mainan sedia ada perlu dialihkan).
Setiap mainan mempunyai indeks. Anda boleh merujuk mainan mengikut indeksnya dan juga menggantikan nombor mainan 7 dengan nombor mainan 13. Anda boleh mengeluarkan nombor mainan 4 daripada senarai. Akhir sekali, anda boleh mempelajari indeks setiap mainan dalam senarai.
Koleksi Set
(set) lebih seperti timbunan mainan di tengah lantai. Anda boleh menambah mainan pada longgokan, dan anda boleh mengeluarkan mainan daripada longgokan. Tetapi mainan ini tidak mempunyai indeks tetap yang dikaitkan dengannya.
Atau katakan anda memilih mainan untuk hari lahir anak anda. Pertama, anda fikirkan sama ada dia sudah mempunyai mainan itu. Semua mainan yang dia sudah ada membentuk satu set mainan yang anda tidak akan memilih untuk membeli.
Dari sudut pandangan ini, anda dapat melihat bahawa susunan mainan dalam satu set "mainan yang sudah wujud" tidak penting, dan juga tidak penting jika anak lelaki hari jadi mempunyai dua contoh mainan tertentu. Anda tidak berminat dengan susunan atau nombor setiap mainan. Perkara yang anda pentingkan ialah mengetahui setiap mainan unik yang wujud dalam set.
Untuk kes seperti ini, anda memerlukan Set
koleksi. Pelaksanaannya yang paling popular ialah HashSet
kelas.
GO TO FULL VERSION