Có một số khác biệt giữa HashMap và Hashtable trong Java:
Hashtable được đồng bộ hóa, trong khi HashMap thì không. Điều này làm cho HashMap tốt hơn cho các ứng dụng không phân luồng, vì các đối tượng không được đồng bộ hóa thường hoạt động tốt hơn các đối tượng được đồng bộ hóa.
Hashtable không cho phép các key hoặc value là null. HashMap cho phép một key null và value null tùy ý.
Một trong các lớp con của HashMap là LinkedHashMap, vì vậy trong trường hợp bạn muốn thứ tự lặp lại có thể dự đoán được (theo mặc định là thứ tự insert), bạn có thể dễ dàng hoán đổi HashMap cho một LinkedHashMap. Điều này sẽ không dễ dàng nếu bạn đang sử dụng Hashtable.