Java'da HashMap ve LinkedHashMap Arasındaki Fark
İçerik
HashMap ve LinkedHashMap birbirlerine oldukça benzeyen sınıflardır ve harita oluşturmak için kullanılırlar. HashMap sınıfı, öğeleri haritada depolamak için bir karma tablosu kullanmak için AbstractMap sınıfını genişletir. LinkedHashMap sınıfı, ekleme sırasına göre haritadaki girişleri korur. HashMap ve LinkedHashMap’i birbirinden ayıran özellik HashMap Bir haritadaki kayıtlı girişlerin sırasını korumaz. Diğer yandan, LinkedHashMap girdikleri girdilerin sırasını korumak için karma veri yapısını kullanır. Aşağıdaki Karşılaştırma Tablosunda, HashMap ve LinkedHashMap arasındaki diğer bazı farklılıkları da inceledim.
- Karşılaştırma Tablosu
- Tanım
- Anahtar Farklılıklar
- Sonuç
Karşılaştırma Tablosu
Karşılaştırma için temel | HashMap | LinkedHashMap |
---|---|---|
Temel | HashMap'teki ekleme sırası korunmadı. | Ekleme sırası LinkedHashMap'te korunur. |
Veri yapısı | HashMap, haritaları depolamak için HashTable kullanır. | LinkedHashMap, haritayı saklamak için Linked List ile Linked List ile birlikte çalışır. |
/ Uygular Uzattı | HashMap, AbstractMap'i genişletir ve Harita arayüzünü uygular. | LinkedHashMap, Hashmap'i genişletir. |
versiyon | HashMap, JDK 2.0'da tanıtıldı. | LinkedHashMap, JDK 4.0'da tanıtıldı. |
havai | Nispeten daha az ek yük. | Harita girişlerinin sırasını korumak zorunda olduğu için nispeten daha fazla ek yük. |
HashMap'un tanımı
HashMap, harita oluşturmak için kullanılan bir sınıftır. Uygular harita Arayüzü. Aynı zamanda AbstractMap girişleri haritada saklamak için bir karma tablosu kullanabilecek şekilde sınıf. Haritanın girişleri bir HashMap'teki girişlerin ekleme sırası korunmaz. Girişlerin HashMap kullanılarak oluşturulan haritaya eklenmesi, girişlerdeki anahtarlarla hesaplanan karma kodu temel alır. Yanlışlıkla HashMap’e yinelenen bir anahtar girerseniz, bu anahtarın önceki değerini önerilen yeni değerle değiştirir ve eski değeri döndürür. Eğer yinelenen bir anahtar kullanılmazsa ve hiçbir değiştirme yapılmazsa, anahtar her zaman Null değerini döndürür. Aşağıdaki örnekte girdilerin karma haritaya nasıl eklendiğini görelim. Hashmap hm = yeni Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Ürdün", 200); System.out.ln (hm); / * çıkış * / {Vijay = 250, Jonny = 150, Ajay = 275, Ürdün = 200} Yukarıdaki kodda olduğu gibi, HashMap'in bir nesnesini yarattığımı ve put yöntemini kullanarak girişleri eklediğimi görebilirsiniz ve HashMap nesnesini eklediğimde, girişler eklendikleri sırayla düzenlenmiyor. Bu nedenle, HashMap'teki girişlerin sırasını döndürecekmiş gibi davranamazsınız. HashMap, Harita arayüzü ve AbstractMap sınıfının tüm yöntemlerini kullanır ve herhangi bir yeni yöntem sunmaz; kendi kurucuları var. Karma haritanın varsayılan kapasitesi 16 ve varsayılan doldurma oranı 0.75. LinkedHashMap ayrıca bir harita oluşturmak için kullanılan bir sınıftır. LinkedHashMap, HashMap sınıf ve daha sonra JDM versiyon 4.0'da HashMap ile tanıştırıldı. HashMap sınıfının alt sınıfı olan LinkedHashMap, yapıcılar ve yöntemler dahil olmak üzere HashMap sınıfıyla tam olarak aynıdır. Ancak LinkedHashMap, girişlerin haritaya yerleştirilme sırasını koruduğu anlamında farklıdır. LinkedHashMap tarafından haritayı depolamak için kullanılan veri yapısı bağlantılı liste ve karma tablo. HashMap tarafından miras alınan yöntemlere ek olarak LinkedHashMap, yeni bir yöntem sunar. removeEldestEntry (). Bu yöntem haritadaki en eski girişi kaldırmak için kullanılır. LinkedHashMap’in varsayılan kapasitesi 16’dır ve varsayılan doldurma oranı da 0.75'tir ve bu da HashMap sınıfına benzer.
LinkedHashMap'un tanımı
- En önemli fark, HashMap’in ekleme düzeninin korunmamış buna karşılık LinkedHashMap’in ekleme sırası korunmuş.
- Haritanın öğelerini saklamak için HashMap tarafından kullanılan veri yapısı hashtable'a. Öte yandan, LinkedHashMap’in kullandığı veri yapısı Bağlantılı liste ve hashtable'a.
- HashMap sınıfı uzanıyor AbstractMap sınıf ve uygular harita arabirimi. Ancak LinkedHashMap sınıfı bir alt sınıftır. HashMap sınıf i.e LinkedNashMap sınıfı HashMap sınıfını genişletir.
- HashMap sınıfı tanıtıldı JDK 2.0 sürümü. LinkedHashMap sınıfı daha sonra tanıtıldı. JDK 4.0 sürümü.
- Nispeten karşılaştırmalı olarak LinkedHashMap sınıfı, haritaya eklenen öğelerin sırasını korumak zorunda olduğundan HashMap'ten daha fazla ek yüke sahiptir.
Sonuç:
LinkedHashMap, yalnızca haritaya yerleştirilen öğelerin dizilimi konusunda endişe duyduğumuz yerlerde kullanılmalıdır.