"Dan akhirnya, aku akan memberitahumu tentang Map."

"Peta, seperti yang Anda ketahui, menyimpan satu set pasangan nilai kunci. Kuncinya harus unik, tetapi nilainya bisa apa saja. Jika Anda menambahkan pasangan nilai kunci ke Peta, dan koleksinya sudah berisi kunci, maka nilai lama akan diganti dengan yang baru. Dengan kata lain, kunci berfungsi seperti indeks khusus yang dapat berupa objek apa saja ."

Peta adalah istilah matematika yang menunjukkan satu set pasangan (x, y), di mana setiap x unik sesuai dengan beberapa y.

Pemrogram sangat menyukai Peta, jadi di sini kami menyajikan 4 koleksi berbeda yang mengimplementasikan antarmuka Peta:

"Inilah struktur warisannya yang sederhana:"

Hirarki peta - 1

"Kuning menunjukkan bahwa Entry adalah antarmuka bersarang di antarmuka Peta ."

"Entri ditambahkan untuk menggambarkan pasangan elemen sebagai satu kesatuan."

"Berikut adalah metode Map<K,V>:"

Metode Keterangan
int size() Mengembalikan jumlah pasangan di peta.
boolean isEmpty() Memeriksa apakah peta kosong.
boolean containsKey(Object key) Apakah peta berisi kunci yang ditentukan?
boolean containsValue(Object value) Apakah peta berisi nilai yang ditentukan?
V get(Object key) Mengembalikan nilai untuk kunci yang ditentukan.
V put(K key, V value) Menetapkan nilai baru untuk kunci.
Metode mengembalikan nilai lama atau nol
putAll(Map<? extends K, ? extends V> m) Menambahkan pasangan dari peta lain.
void clear() Membersihkan peta, yaitu menghapus semua pasangan.
Set<K>keySet() Mengembalikan Set kunci.
Collection<V>values() Mengembalikan kumpulan nilai.
Set<Map.Entry<K, V>>entrySet() Mengembalikan Set pasangan.

"K dan V adalah parameter tipe untuk kunci dan nilai."

"Yah, aku akrab dengan sebagian besar metode, tapi aku hanya bekerja dengan beberapa di antaranya."

"Apa lagi yang bisa kamu ceritakan tentang kelas Masuk?"

"Kelas ini mendeskripsikan sepasang elemen. Ia memiliki beberapa metode:"

Metode Keterangan
getKey() Mengembalikan kunci pasangan nilai kunci.
getValue() Mengembalikan nilai dari key-value pair.
setValue(V value) Menetapkan nilai baru dalam key-value pair.

"Masuk itu nyaman, karena Anda bisa meneruskan pasangan ke suatu metode tanpa melewati seluruh peta."

"Jadi begitu."

"Sekarang saya akan membahas implementasi Peta."

"Pertama adalah HashMap . Ini menggunakan tabel hash untuk menyimpan elemen. Kunci dan nilai bisa dari jenis apa pun, serta nol. Urutan elemen bisa berubah saat koleksi berubah ."

"Elemen disimpan dalam HashMap sebagai kumpulan grup atau keranjang. Metode hashCode() elemen menentukan di keranjang mana ia berada."

"Dengan sangat kasar, elemen dengan kode hash dari 1 hingga 100 masuk ke keranjang pertama, elemen dengan nilai 101 hingga 200 masuk ke keranjang kedua, dan seterusnya."

"Tujuan menyimpan elemen dengan cara ini adalah kita dapat menghilangkan semua elemen dalam wadah yang tidak relevan saat mencari atau menghapus elemen."

"Jadi begitu."

"Ada artikel yang sangat bagus tentang HashMap. Saya sarankan Anda membacanya: https://medium.com/@mr.anmolsehgal/Java-hashmap-internal-implementation-21597e1efec3 "

"Koleksi kedua adalah LinkedHashMap . Perbedaan utamanya dari HashMap adalah ia juga menyimpan item sebagai daftar tertaut. Dalam HashMap biasa, urutan elemen tidak ditentukan dan dapat berubah seiring waktu. Dan Anda bisa mendapatkan iterator dari LinkedHashMap dan menggunakannya untuk menelusuri semua elemen dalam urutan penambahannya ke LinkedHashMap. Selain itu, LinkedHashMap memiliki iterator yang memungkinkan Anda menelusuri semua pasangan dalam urutan penggunaan/aktivitas terakhir."

"Ada artikel yang sangat bagus tentang LinkedHashMap. Ini dia: https://medium.com/@mr.anmolsehgal/java-linkedhashmap-internal-implementation-44e2e2893036 "

"Koleksi ketiga yang ingin saya bicarakan hari ini adalah TreeMap ."

" TreeMap menjaga elemennya diurutkan dalam urutan menaik. Hal ini dicapai karena TreeMap menggunakan pohon merah-hitam yang seimbang untuk menyimpan elemen."

"Akibatnya, waktu penyisipan dan waktu pencarian sangat rendah. Kelas ini merupakan pilihan tepat saat menggunakan data dalam jumlah sangat besar."

"Dan, tentu saja, kami memiliki artikel tentang TreeMap: https://medium.com/xebia-engineering/treemap-internals-199e0e0050b5 "

"Apa yang belum kuceritakan padamu?"

"WeakHashMap, tapi Rishi memberitahuku tentang itu beberapa hari yang lalu."

"Kapan itu?"

"Ketika dia berbicara tentang SoftReference, WeakReference, dan PhantomReference."

"Aku percaya padamu, mengingat kamu menyebutkan semuanya dengan benar. Kalau begitu santai saja. Sampai jumpa nanti malam."

"Sampai jumpa, Ellie."