Java'da HashMap ve Hashtable Arasındaki Fark
İçerik
HashMap ve Hashtable, her ikisi de bir nesne grubu temsil edilenler
HashMap ve Hashtable arasındaki bazı farklılıkları öğrenmek için aşağıda gösterilen karşılaştırma tablosuna bakalım.
- Karşılaştırma Tablosu
- Tanım
- Anahtar Farklılıklar
- benzerlikler
- Sonuç
Karşılaştırma Tablosu
Karşılaştırma için temel | HashMap | hashtable'a |
---|---|---|
Uygula / Uzat | HashMap sınıfı, Harita arabirimini uygular ve bir AbstractMap sınıfını genişletir. | Hashtable, Dictionary Legacy sınıfını genişletiyor, ancak yeniden tasarlandı ve şimdi de Harita arayüzünü uyguluyor. |
Senkronizasyon | HashMap senkronize edilmez ve bu nedenle HashMap nesnesi güvenli bir şekilde dişli değildir. | Hashtable senkronize edilir ve dolayısıyla Hashtable'ın nesnesi thread güvenlidir. |
Tuşlar / Değer | Bir anahtar Null değerini yalnızca bir kez döndürür, ancak bir değer Null değerini istediğiniz zaman döndürür. | Bir anahtar, karma tablosunun bir dizini olarak kullanılacak karma kodunu elde etmek için kullanıldığından Null değerini döndüremez ve bir değer Null değerini döndüremez. |
Varsayılan İlk Kapasite | HashMap’in varsayılan başlangıç kapasitesi 16’dır. | Hashtable'ın varsayılan başlangıç kapasitesi 11'dir. |
Traversing | HashMap yineleyici tarafından geçildi. | Harita sınıfı gibi Hashtable da geçiş için doğrudan Iterator'ı desteklemiyor ve dolayısıyla Numaralandırıcıyı kullanıyor. |
HashMap'un tanımı
HashMap, uygulayan bir sınıftır harita arayüzünü genişletir ve AbstractMap sınıf hash tablosunu kullanır. HashMap’in nesnesi, bir koleksiyona / grubuna atıfta bulunur. / * K, anahtarı temsil eder ve V, * / class HashMap değerini temsil eder. İlk yapıcı, varsayılan kapasitesi 16 ve varsayılan doldurma oranı 0.75 olan boş bir HashMap nesnesini başlatan varsayılan bir yapıcıdır. İkinci yapıcı, karma haritasını m değeriyle başlatır. Üçüncü kurucu, “kapasite” argümanında verilen değere karşılık gelen ilk kapasiteye sahip bir karma haritası oluşturur. Dördüncü kurucu, parametrelerde sağlanan kapasite ve doldurma oranına sahip bir karma haritası başlatır. Şimdi bir karma haritadaki girişleri nasıl besleyeceğimizi öğrenelim. 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, boş bir HashMap nesnesi oluşturduğumu görebilirsiniz. hm varsayılan başlangıç kapasitesi ve varsayılan doldurma oranı ile. Daha sonra, anahtarı değere eşleyen put (K, V) yöntemini kullanarak karma haritaya dört giriş ekledim. Girme sırası sabit olmadığından, girişlerin beslediğiniz sırada sıralanmadığını görebilirsiniz. Şimdiden bir girişiniz olduğunu göz önünde bulundurun Hashtable, genişleten bir sınıftır Sözlük eski bir sınıf olan ve uygulamak üzere yeniden yapılandırılan sınıf harita arayüz. Hashtable, karma tablosunu veri yapısı olarak kullanır. Hashtable, HashMap'a benzer, burada Hashtable'ın amacı, her girişin bir çift olduğu girişlerin toplanması anlamına gelir. / * K, anahtarı belirtir ve V, * / class Hashtable anahtarıyla ilişkilendirilen değeri belirtir Yukarıdaki kodda, birinci yapıcı, Hashtable sınıfından boş bir nesne oluşturan varsayılan yapıcıdır, varsayılan boyutu 11'dir ve varsayılan doldurma oranı 0,75'tir. İkinci yapıcı, “boyut” parametresinde sağlanan değere karşılık gelen boyutta bir karma tablo oluşturur. Üçüncü yapıcı, parametrede sağlanan boyut ve doldurma oranlı bir karma tablosu oluşturur. Dördüncü yapıcı, karma tablosunu m değeriyle başlatır. Şimdi nasıl ekleneceğini öğrenelim Hashtable ht = new Hashtable (); ht.put (yeni hashCode (2), 275); ht.put (yeni hashCode (12), 250); ht.put (yeni hashCode (16), 150); ht.put (yeni hashCode (8), 200); System.out.ln (ht); / * çıkış * / {12 = 250, 16 = 150,2y = 275, 8 = 200} Yukarıdaki kodda, Hashtable'dan boş bir nesne yarattım ve put () yöntemini kullanarak dört girdi ekledim. Put yönteminde, girdi nesnesi için indeks değeri görevi görecek hash kod değerini hesaplayan ve döndüren hashCode () olarak adlandırdım. Gördüğünüz gibi karma tablonun büyüklüğünden bahsetmedim, bu nedenle varsayılan olarak 11 olacaktır. Burada ayrıca, ekleme sırası korunmaz ve bu nedenle ed girişleri sırayla görünmediğinde beslenir. HashMap, nesneleri senkronize edilmediğinden ve aynı anda birden çok iş parçacığı üzerinde çalışabildiğinden ve dolayısıyla Hashtable'dan daha hızlı çalıştığından performansta daha iyidir.
Hashtable'un tanımı
benzerlikler:
Sonuç: