Tavsiye, 2022

Editörün Seçimi

Java'da HashMap ve LinkedHashMap Arasındaki Fark

HashMap ve LinkedHashMap, birbirlerine oldukça benzeyen ve bir harita oluşturmak için kullanılan sınıflardır. 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’in bir haritadaki kayıtlı girişlerin sırasını korumamasıdır . Diğer taraftan LinkedHashMap, girdikleri girdilerin sırasını korumak için karma bir veri yapısı 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

Karşılaştırma için temelHashMapLinkedHashMap
TemelHashMap'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.
versiyonHashMap, JDK 2.0'da tanıtıldı.LinkedHashMap, JDK 4.0'da tanıtıldı.
havaiNispeten 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. Harita Arayüzünü uygular. Ayrıca AbstractMap sınıfını genişletir, böylece girdileri haritada depolamak için bir karma tablo kullanabilir. Haritanın girişleri, her bir tuşun değerle ilişkilendirildiği bir çifttir. Girişteki anahtar, bu nedenle değeri almak için kullanılır, anahtarın benzersiz olması gerekir. Bu nedenle HashMap’te yinelenen anahtarlara izin verilmez. Ancak haritanın her girişindeki anahtarın farklı türleri olabilir, yani haritadaki HashMap tarafından oluşturulan anahtarlar heterojen olabilir. Bir haritayı saklamak için HashMap tarafından kullanılan veri yapısı karma tablodur.

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 herhangi 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.println (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örebiliyorsunuz ve HashMap nesnesini yazdırdığımda girişler eklendikleri sırayla yazdırılmıyor. 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'tir .

LinkedHashMap'un tanımı

LinkedHashMap ayrıca bir harita oluşturmak için kullanılan bir sınıftır. LinkedHashMap, HashMap sınıfını genişletir ve daha sonra JDK sürüm 4.0'da HashMap ile tanıştırılır. 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ılık gösterir. LinkedHashMap tarafından haritayı saklamak için kullanılan veri yapısı bağlantılı liste ve karma tablodur .

HashMap tarafından miras alınan yöntemlere ek olarak LinkedHashMap, removeEldestEntry () olan yeni bir yöntem sunar . 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.

Java'da HashMap ve LinkedHashMap Arasındaki Temel Farklar

  1. En önemli fark HashMap'in yerleştirme sırasının korunmaması, LinkedHashMap'in yerleştirme sırasının korunmasıdır .
  2. Haritanın öğelerini saklamak için HashMap tarafından kullanılan veri yapısı Hashtable'dır . Diğer taraftan LinkedHashMap tarafından kullanılan veri yapısı Linked listesi ve Hashtable'dır .
  3. HashMap sınıfı, AbstractMap sınıfını genişletir ve Harita arabirimini uygular. Ancak LinkedHashMap sınıfı, HashMap sınıfının bir alt sınıfıdır, yani LinkedHashMap sınıfı, HashMap sınıfını genişletmektedir.
  4. HashMap sınıfı JDK 2.0 versiyonunda tanıtıldı. LinkedHashMap sınıfı daha sonra JDK 4.0 sürümünde tanıtıldı.
  5. Nispeten karşılaştırmalı 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 sırası ile ilgilendiğimiz yerlerde kullanılmalıdır.

Top