Java'da HashMap ve LinkedHashMap Arasındaki Fark

Yazar: Laura McKinney
Yaratılış Tarihi: 2 Nisan 2021
Güncelleme Tarihi: 10 Mayıs Ayı 2024
Anonim
Java'da HashMap ve LinkedHashMap Arasındaki Fark - Teknoloji
Java'da HashMap ve LinkedHashMap Arasındaki Fark - Teknoloji

İç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.

  1. Karşılaştırma Tablosu
  2. Tanım
  3. Anahtar Farklılıklar
  4. Sonuç

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. 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 Her bir anahtarın değerle ilişkilendirildiği çift. 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ı bir türü 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 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'un tanımı

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.

  1. En önemli fark, HashMap’in ekleme düzeninin korunmamış buna karşılık LinkedHashMap’in ekleme sırası korunmuş.
  2. 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.
  3. 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.
  4. 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ü.
  5. 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.