"Ve sonunda sana Harita'dan bahsedeceğim."

"Map, bildiğiniz gibi, bir dizi anahtar/değer çifti saklar. Anahtarlar benzersiz olmalıdır, ancak değerler herhangi bir şey olabilir. Bir Haritaya bir anahtar/değer çifti eklerseniz ve koleksiyon zaten anahtarı içeriyorsa, o zaman eski değer yenisiyle değiştirilecek.Başka bir deyişle, anahtar herhangi bir nesne olabilen özel bir dizin gibi davranır ."

Harita, her benzersiz x'in bir miktar y'ye karşılık geldiği bir (x, y) çiftleri kümesini ifade eden matematiksel bir terimdir.

Programcılar Map'e çok düşkündür, bu yüzden burada Map arayüzünü uygulayan 4 farklı koleksiyon sunuyoruz:

"İşte onun basit kalıtım yapısı:"

Harita hiyerarşisi - 1

"Sarı, Girişin Harita arayüzünde iç içe geçmiş bir arayüz olduğunu gösterir ."

"Bir eleman çiftini tek bir varlık olarak tanımlamak için giriş eklendi."

"Map<K,V> yöntemleri şunlardır:"

Yöntemler Tanım
int size() Haritadaki çiftlerin sayısını döndürür.
boolean isEmpty() Haritanın boş olup olmadığını kontrol eder.
boolean containsKey(Object key) Harita belirtilen anahtarı içeriyor mu?
boolean containsValue(Object value) Harita belirtilen değeri içeriyor mu?
V get(Object key) Belirtilen anahtarın değerini döndürür.
V put(K key, V value) Anahtar için yeni bir değer ayarlar.
Yöntem eski değeri veya boş değeri döndürür
putAll(Map<? extends K, ? extends V> m) Başka bir haritadan çiftler ekler.
void clear() Haritayı temizler, yani tüm çiftleri kaldırır.
Set<K>keySet() Bir dizi anahtar döndürür.
Collection<V>values() Bir değerler koleksiyonu döndürür.
Set<Map.Entry<K, V>>entrySet() Bir çift kümesi döndürür.

"K ve V, anahtarlar ve değerler için tür parametreleridir."

"Pekala, yöntemlerin çoğuna aşinayım ama yalnızca bazılarıyla çalıştım."

"Bana Giriş sınıfı hakkında başka ne söyleyebilirsin?"

"Bu sınıf bir çift öğeyi tanımlar. Birkaç yöntemi vardır:"

Yöntemler Tanım
getKey() Anahtar/değer çiftinin anahtarını döndürür.
getValue() Anahtar/değer çiftinin değerini döndürür.
setValue(V value) Anahtar/değer çiftinde yeni bir değer ayarlar.

"Giriş uygundur, çünkü tüm haritayı geçmeden bir çifti bir yönteme iletebilirsiniz."

"Anlıyorum."

"Şimdi Harita uygulamalarının üzerinden geçeceğim."

"İlki HashMap'tir . Öğeleri depolamak için karma tabloları kullanır. Anahtarlar ve değerler herhangi bir türde olabilir ve boş olabilir. Koleksiyon değiştiğinde öğelerin sırası değişebilir ."

"Öğeler, bir HashMap'te bir dizi grup veya küme olarak depolanır. Bir öğenin hashCode() yöntemi, hangi kümeye düştüğünü belirler."

"Kabaca söylemek gerekirse, 1'den 100'e kadar bir hash koduna sahip öğeler birinci kovaya, 101'den 200'e kadar bir değere sahip olanlar ikinciye vb."

"Öğeleri bu şekilde depolamanın amacı, öğeleri ararken veya kaldırırken alakasız kovalardaki tüm öğeleri ortadan kaldırabilmemizdir."

"Anlıyorum."

"HashMap hakkında gerçekten güzel bir yazı var. Okumanızı tavsiye ederim: https://medium.com/@mr.anmolsehgal/java-hashmap-internal-implementation-21597e1efec3 "

"İkinci koleksiyon LinkedHashMap'tir . HashMap'ten temel farkı, öğeleri bağlantılı bir liste olarak da saklamasıdır. Sıradan bir HashMap'te, öğelerin sırası tanımsızdır ve zamanla değişebilir. Ve bir LinkedHashMap'ten yineleyici alabilirsiniz. ve tüm öğeleri LinkedHashMap'e eklendikleri sırayla incelemek için kullanın. Ek olarak, LinkedHashMap tüm çiftleri son kullanım/aktivite sırasına göre incelemenizi sağlayan bir yineleyiciye sahiptir."

"LinkedHashMap hakkında gerçekten güzel bir makale var. Buyrun: https://medium.com/@mr.anmolsehgal/java-linkedhashmap-internal-implementation-44e2e2893036 "

"Bugün bahsetmek istediğim üçüncü koleksiyon, TreeMap ."

" TreeMap, öğelerini artan düzende sıralar. Bu, TreeMap'in öğeleri depolamak için dengeli bir kırmızı-siyah ağaç kullanması nedeniyle elde edilir."

"Sonuç olarak, ekleme süresi ve arama süresi çok düşük. Bu sınıf, çok büyük miktarda veri kullanırken harika bir seçim."

"Ve tabii ki, TreeMap hakkında bir makalemiz var: https://medium.com/xebia-engineering/treemap-internals-199e0e0050b5 "

"Sana henüz söylemediğim ne var?"

"WeakHashMap, ama Rishi bana bundan birkaç gün önce bahsetti."

"Ne zaman oldu?"

"SoftReference, WeakReference ve PhantomReference hakkında konuştuğunda."

"Hepsinin adını doğru verdiğine göre sana inanıyorum. O zaman git rahatla. Akşam görüşürüz."

"Hoşçakal, Ellie."