HashMap ile Hashtable Arasındaki Fark

0
163

Anahtar fark: Bilgisayar bilimlerinde HashMap ile Hashtable isimlerle değerleri bağlayan bir veri yapısına referanstır. Java’da bu iki konsept arasında önemli bazı farklılıklar vardır: Hashtable senkronizedir, HashMap ise senkronize değildir. Hashtable null yani geçersiz ve boş değerler kabul etmezken, HashMap bir null anahtarını ve herhangi bir null değerini kabul eder.

HashMap ve Hashtable Java koleksiyonunda yer alan veri yapılarıdır. Nesneleri saklamak için anahtar-değer çiftleri kullanırlar. İkisinin de ortak bazı noktaları vardır: örneğin her ikisi de java.util.Map arayüzünü uygularlar ve hashleme prensibi üzerine çalışırlar. Fakat Java programlama dilinde bu iki konsepti incelediğimizde aralarında ciddi bazı farklılıkların olduğunu görüyoruz.

HashMap ile Hashtable Arasındaki Fark

Hashtable bir değeri saklamak ve çağırmak için bir anahtar kullanır. Bu anahtarun eşsiz(unique) olması gerekir. Anahtar ve değerleri saklayan tabloya hash table ya da Türkçe adıyla hash tablosu denir. Hash table anahtarları hashleyen bir algoritma kullanır. Bu hash fonksiyonu sayıları input verisine atar ve veri dizin indeksi şeklinde saklanır.

Hashtable’da olduğu gibi HashMap de aynı hashleme prensipleri üzerine çalışır. HashMap’i Map arayüzünün bir hash tablosuna implementasyonu olarak da düşünebiliriz. Fakat Hashtable’dan birkaç noktada ayrılır. HashMap senkronize değildir, Hashtable ise senkronizedir. Senkronize derken şunu kastediyoruz: aynı anda sadece bir thread tabloyu modifiye edebilir. Bu yüzden Hashtable üzerinde bir güncelleme işlemi yapacaksanız, tablonun öncelikle kilitlenmesi gereklidir. Bu esnada diğer thread’ler beklemek zorundadır. İşlem bittikten sonra kilit kalkar ve diğer thread’ler de tablo üzerinde işlem yapmaya başlayabilir. HashMap ile Hashtable arasındaki bir diğer büyük fark da; Hashtable null değerlere izin vermez. HashMap ise bir null anahtarını ve herhangi bir null değerini kabul eder.

HashMapHashtable
SenkronizasyonSenkronize değildir.Senkronizedir.
Null değerlerNull değer kabul eder.Null değer kabul etmez.
Java  versiyonu1.2Java Development Kit’in ilk sürümü
PerformansDiğerine kıyasla daha iyiDiğerine kıyasla daha kötü
UygulamaNon-threaded uygulamalarda iyi.Multi-threaded uygulamalarda iyi.
Serialization Not-Serialized Serialized
PAYLAŞ

Sizin de söyleyecekleriniz varsa lütfen yazın