HashMap – Hashtable Farkı

Hem HashMap hem de Hashtable, Map arayüzünü gerçekleştiren iki sınıftır. Her ikisi de verileri etiketleyerek saklar. Collections isimli makalemde Map kullanımına küçük bir örnek vermiştim.

Bu yazımda ise öğrencilerimin çok fazla sordukları bir konuya açıklık getireceğim. Map interface’ini implement eden birçok sınıf var. Peki bu sınıflardan hangisini ne zaman kullanacağız? En çok kullanılanlardan iki tanesi HashMap ve Hashtable arasındaki farklardan bazıları şöyle :

  • HashMap thread safe değil, Hashtable ise thread safe. Yani harici olarak synchronization kullanmadan eş zamanlı erişim sağlayan bir uygulamada HashMap kullanamazsınız. Hashtable ise birden fazla thread tarafından aynı anda işletilebilen bir nesnedir.

HashMap nesnesini harici olarak :

Map m = Collections.synchronizeMap(hashMap);

şeklinde synchronize edebilirsiniz.

 

  • HashMap nesnesine anahtar ve değer olarak null değer ekleyebilirsiniz. Ancak Hashtable buna izin vermez.
  • Thread-safety ve synchronization yüzünden tek threadli çalışan sistemlerde Hashtable çok daha yavaş çalışır.

Java 5 ile birlikte gelen ConcurrentHashMap nesnesi Hashtable sınıfının yavaşlık ve ölçeklenebilirlik sıkıntılarını ortadan kaldırmıştır.

 



172 defa okundu



Yorum Yazmak İstiyorum

E-posta hesabınız yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>