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
List
ArrayList
Daftar
LinkedList
Daftar tertaut
Vector
Vektor
Stack
Tumpukan
Set
HashSet
Mengatur
TreeSet
LinkedHashSet
Queue
PriorityQueue
Antre
ArrayQueue
Map
HashMap
Peta/Kamus
TreeMap
HashTable

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
void add(Type value)
Menambahkan valueelemen ke koleksi
boolean remove(Type value)
Menghapus valueelemen dari koleksi.
Mengembalikan truejika ada elemen seperti itu
boolean contains(Type value)
Memeriksa apakah koleksi memiliki valueelemen
void clear()
Membersihkan koleksi, menghapus semua elemen
int size()
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
HashSet<String> set = new HashSet<String>();

set.add("Hallo");
set.add("Hello");
set.add("Hola");
set.add("Bonjour");
set.add("Ciao");
set.add("Namaste");

Scanner console = new Scanner(System.in);
String str = console.nextLine();

if (set.contains(str))
   System.out.println("Goodbye!");
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.