"Dan akhirnya, saya akan memberitahu anda tentang Peta."

"Peta, seperti yang anda ketahui, menyimpan satu set pasangan nilai kunci. Kunci mestilah unik, tetapi nilainya boleh apa sahaja. Jika anda menambah pasangan nilai kunci pada Peta dan koleksi sudah mengandungi kunci, maka nilai lama akan digantikan dengan yang baru. Dalam erti kata lain, kunci bertindak seperti indeks khas yang boleh menjadi sebarang objek ."

Peta ialah istilah matematik yang menandakan satu set pasangan (x, y), di mana setiap x unik sepadan dengan beberapa y.

Pengaturcara sangat menyukai Peta, jadi di sini kami membentangkan 4 koleksi berbeza yang melaksanakan antara muka Peta:

"Berikut ialah struktur pewarisan ringkasnya:"

Hierarki peta - 1

"Kuning menunjukkan bahawa Kemasukan ialah antara muka bersarang dalam antara muka Peta ."

"Entri telah ditambahkan untuk menggambarkan pasangan elemen sebagai entiti tunggal."

"Berikut ialah kaedah Map<K,V>:"

Kaedah Penerangan
int size() Mengembalikan bilangan pasangan dalam peta.
boolean isEmpty() Menyemak sama ada peta kosong.
boolean containsKey(Object key) Adakah peta mengandungi kunci yang ditentukan?
boolean containsValue(Object value) Adakah peta mengandungi nilai yang ditentukan?
V get(Object key) Mengembalikan nilai untuk kunci yang ditentukan.
V put(K key, V value) Menetapkan nilai baharu untuk kunci.
Kaedah ini mengembalikan nilai lama atau null
putAll(Map<? extends K, ? extends V> m) Menambah pasangan dari peta lain.
void clear() Membersihkan peta, iaitu mengalih keluar semua pasangan.
Set<K>keySet() Mengembalikan Set kunci.
Collection<V>values() Mengembalikan koleksi nilai.
Set<Map.Entry<K, V>>entrySet() Mengembalikan Set pasangan.

"K dan V ialah parameter jenis untuk kunci dan nilai."

"Baiklah, saya sudah biasa dengan kebanyakan kaedah, tetapi saya hanya bekerja dengan beberapa daripadanya."

"Apa lagi yang awak boleh beritahu saya tentang kelas Kemasukan?"

"Kelas ini menerangkan sepasang elemen. Ia mempunyai beberapa kaedah:"

Kaedah Penerangan
getKey() Mengembalikan kunci pasangan nilai kunci.
getValue() Mengembalikan nilai pasangan nilai kunci.
setValue(V value) Menetapkan nilai baharu dalam pasangan nilai kunci.

"Kemasukan adalah mudah, kerana anda boleh menghantar pasangan ke kaedah tanpa melepasi keseluruhan peta."

"Saya faham."

"Sekarang saya akan membincangkan pelaksanaan Peta."

"Pertama ialah HashMap . Ia menggunakan jadual cincang untuk menyimpan elemen. Kekunci dan nilai boleh daripada sebarang jenis, serta nol. Susunan elemen boleh berubah apabila koleksi berubah ."

"Elemen disimpan dalam HashMap sebagai satu set kumpulan atau baldi. Kaedah hashCode() elemen menentukan baldi mana ia jatuh."

"Secara kasarnya, elemen dengan kod cincang dari 1 hingga 100 jatuh ke dalam baldi pertama, elemen dengan nilai dari 101 hingga 200 jatuh ke dalam baldi kedua, dan seterusnya."

"Maksud menyimpan elemen dengan cara ini ialah kita boleh menghapuskan semua elemen dalam baldi yang tidak berkaitan apabila mencari atau mengalih keluar elemen."

"Saya faham."

"Terdapat artikel yang sangat bagus tentang HashMap. Saya syorkan anda membacanya: https://medium.com/@mr.anmolsehgal/java-hashmap-internal-implementation-21597e1efec3 "

"Koleksi kedua ialah LinkedHashMap . Perbezaan utamanya daripada HashMap ialah ia juga menyimpan item sebagai senarai terpaut. Dalam HashMap biasa, susunan elemen tidak ditentukan dan mungkin berubah mengikut masa. Dan anda boleh mendapatkan iterator daripada LinkedHashMap dan gunakannya untuk menelusuri semua elemen dalam susunan ia telah ditambahkan pada LinkedHashMap. Selain itu, LinkedHashMap mempunyai iterator yang membolehkan anda berjalan melalui semua pasangan mengikut urutan penggunaan/aktiviti terakhir."

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

"Koleksi ketiga yang saya ingin bincangkan hari ini ialah TreeMap ."

" TreeMap menyimpan elemennya disusun dalam tertib menaik. Ini dicapai kerana fakta bahawa TreeMap menggunakan pokok merah-hitam yang seimbang untuk menyimpan elemen."

"Akibatnya, masa pemasukan dan masa carian adalah sangat rendah. Kelas ini merupakan pilihan yang bagus apabila menggunakan jumlah data yang sangat besar."

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

"Apa yang saya belum beritahu awak lagi?"

"WeakHashMap, tetapi Rishi memberitahu saya mengenainya beberapa hari lalu."

"Bilakah itu?"

"Apabila dia bercakap tentang SoftReference, WeakReference dan PhantomReference."

"Saya percaya awak, memandangkan awak namakan semuanya betul. Lepas tu pergi berehat. Jumpa malam ni."

"Selamat tinggal, Ellie."