Sự khác biệt giữa HashMap và Hashtable trong Java
NộI Dung
Cả HashMap và Hashtable, cả hai đều được sử dụng để đại diện cho một nhóm đối tượng được thể hiện trong
Hãy để xem chế độ xem biểu đồ so sánh bên dưới để tìm hiểu thêm một số khác biệt giữa HashMap và Hashtable.
- Biểu đồ so sánh
- Định nghĩa
- Sự khác biệt chính
- Điểm tương đồng
- Phần kết luận
Biểu đồ so sánh
Cơ sở để so sánh | Bản đồ băm | Hashtable |
---|---|---|
Thực hiện / Mở rộng | Lớp HashMap thực hiện giao diện Map và mở rộng một lớp AbstractMap. | Hashtable mở rộng lớp Dictionary Legacy nhưng, nó được thiết kế lại và bây giờ nó cũng thực hiện giao diện Map. |
Đồng bộ hóa | HashMap không được đồng bộ hóa và do đó, đối tượng HashMap không được xâu chuỗi an toàn. | Hashtable được đồng bộ hóa và do đó, đối tượng của Hashtable là luồng an toàn. |
Khóa / Giá trị | Một khóa có thể trả về Null chỉ một lần, nhưng một giá trị có thể trả về Null bất kỳ số lượng thời gian nào. | Khóa không thể trả về Null vì nó được sử dụng để lấy mã băm sẽ được sử dụng làm chỉ mục của bảng băm, và giá trị không thể trả về Null. |
Công suất ban đầu mặc định | Dung lượng ban đầu mặc định của HashMap là 16. | Dung lượng ban đầu mặc định của Hashtable là 11. |
Đi qua | HashMap được duyệt qua Iterator. | Giống như lớp Map, Hashtable cũng không hỗ trợ trực tiếp Iterator để duyệt qua và do đó, nó sử dụng Enumerator. |
Định nghĩa của HashMap
HashMap là một lớp thực hiện Bản đồ giao diện và mở rộng Tóm tắt lớp sử dụng bảng băm. Đối tượng HashMap, đề cập đến một bộ sưu tập / bộ / * K đại diện cho khóa và V đại diện cho giá trị * / class HashMap Hàm tạo đầu tiên là hàm tạo mặc định khởi tạo một đối tượng rỗng của HashMap với dung lượng mặc định là 16 và tỷ lệ lấp đầy mặc định là 0,75. Hàm tạo thứ hai khởi tạo bản đồ băm với giá trị là m. Hàm tạo thứ ba tạo ra một bản đồ băm với dung lượng ban đầu tương ứng với giá trị được cung cấp trong đối số. Hàm tạo thứ tư khởi tạo bản đồ băm với dung lượng và tỷ lệ lấp đầy được cung cấp trong các tham số. Bây giờ chúng ta hãy tìm hiểu làm thế nào để cung cấp các mục trong bản đồ băm. Hashmap hm = Hashmap mới (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * đầu ra * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} Trong đoạn mã trên, bạn có thể thấy rằng tôi đã tạo một đối tượng HashMap trống hm với công suất ban đầu mặc định và tỷ lệ lấp đầy mặc định. Sau đó, tôi chèn bốn mục trong bản đồ băm bằng phương thức put (K, V) ánh xạ khóa tới giá trị. Bạn có thể quan sát rằng các mục không phải là ed trong một chuỗi bạn cho chúng ăn vì thứ tự chèn không cố định. Bây giờ, hãy xem xét một trường hợp mà bạn đã có một mục Hashtable là một lớp mở rộng Từ điển lớp là một lớp kế thừa và được tổ chức lại để thực hiện Bản đồ giao diện. Hashtable sử dụng bảng băm làm cấu trúc dữ liệu của nó. Hashtable tương tự như HashMap vì ở đây cũng là đối tượng của Hashtable đề cập đến bộ sưu tập các mục trong đó mỗi mục là một cặp / * K chỉ định khóa và V chỉ định giá trị được liên kết với khóa * / class Hashtable Trong đoạn mã trên, hàm tạo đầu tiên là hàm tạo mặc định tạo một đối tượng trống của lớp Hashtable, kích thước mặc định của nó là 11 và tỷ lệ điền mặc định là 0,75. Hàm tạo thứ hai tạo một bảng băm với kích thước tương ứng với giá trị được cung cấp trong tham số Kích thước kích thước. Hàm tạo thứ ba tạo một bảng băm với kích thước và tỷ lệ lấp đầy được cung cấp trong tham số. Hàm dựng thứ tư khởi tạo bảng băm với giá trị m. Bây giờ chúng ta hãy tìm hiểu làm thế nào để chèn Hashtable ht = new Hashtable (); ht.put (mã băm mới (2), 275); ht.put (mã băm mới (12), 250); ht.put (mã băm mới (16), 150); ht.put (mã băm mới (8), 200); System.out.ln (ht); / * đầu ra * / {12 = 250, 16 = 150,2y = 275, 8 = 200} Trong đoạn mã trên, tôi đã tạo một đối tượng rỗng của Hashtable và chèn bốn mục nhập bằng phương thức put (). Phương thức put bên trong tôi gọi là hashCode () để tính toán và trả về giá trị mã băm sẽ đóng vai trò là giá trị chỉ mục cho đối tượng mục nhập. Như bạn có thể thấy tôi đã đề cập đến kích thước của bảng băm nên theo mặc định nó sẽ là 11. Ở đây, thứ tự chèn không được giữ nguyên và do đó, khi các mục ed không xuất hiện theo trình tự, nó được cung cấp. HashMap có hiệu suất tốt hơn vì các đối tượng của nó không được đồng bộ hóa và nhiều luồng có thể hoạt động trên nó cùng một lúc và do đó, nó nhanh hơn Hashtable.Định nghĩa của Hashtable
Điểm tương đồng:
Phần kết luận: