So sánh HashMap và Hashtable trong Java

Trong các bài viết trước, tôi đã giới thiệu với các bạn HashMap và HashTable trong Java. Trong bài này, chúng ta cùng so sánh sự giống nhau và khác nhau giữa chúng.

1. Giống nhau của HashMap và Hashtable

  • Cả HashMap và Hashtable đều cài đặt interface Map.
  • HashMap và Hashtable đều được sử dụng để lưu trữ dữ liệu ở dạng cặp key và value.
  • Cả hai đều đang sử dụng kỹ thuật băm để lưu trữ các khóa duy nhất.

2. Khác nhau của HashMap và Hashtable

HashMapHashtable
HashMap cho phép một key là null và nhiều giá trị null.Hashtable không cho phép bất kỳ key hoặc giá trị null.
HashMap không đồng bộ.Hashtable là đồng bộ.
HashMap nhanh hơn Hashtable .Hashtable chậm hơn HashMap.
HashMap được duyệt bởi Iterator.Hashtable được duyệt bởi Enumerator và Iterator.
Iterator trong HashMap là fail-fast.Enumerator trong Hashtable là không fail-fast.
HashMap kế thừa lớp AbstractMap.Hashtable kế thừa lớp Dictionary.
Chúng ta có thể làm cho HashMap đồng bộ bằng cách gọi phương thức:
Map m = Collections.synchronizedMap(hashMap);
Hashtable được đồng bộ nội bộ và không thể hủy đồng bộ hóa.
HashMap được ưa thích trong các ứng dụng đơn luồng (single-thread). Nếu bạn muốn sử dụng HashMap trong ứng dụng đa luồng (mulit-thread), có thể thực hiện bằng cách sử dụng phương thức Collections.synchronizedMap().Mặc dù HashTable có để sử dụng trong các ứng dụng đa luồng (multi-thread), nhưng ngày nay nó ít được sử dụng. Bởi vì, ConcurrentHashMap là lựa chọn tốt hơn HashTable.