So sánh sự giống và khác nhau giữa TreeMap HashMap Hashtable

Sự khác biệt giữa HashMap và TreeMap

Sự khác biệt giữa HashMap và TreeMap - Công Nghệ

HashMap là gì?

HashMap là một triển khai Bản đồ dựa trên bảng băm cung cấp hiệu suất không đổi trong thời gian để chèn và định vị các cặp. Lớp HashMap cung cấp một triển khai bản đồ dựa trên cấu trúc dữ liệu Hashtable. Việc triển khai này hỗ trợ tất cả các hoạt động của Map và cho phép nhiều giá trị null nhưng chỉ có một khóa null. Nó sử dụng các cặp khóa / giá trị để lưu trữ các giá trị trong bảng băm. Đó là Bản đồ không đồng bộ, có nghĩa là nó không an toàn cho luồng và không thể chia sẻ giữa nhiều luồng mà không được đồng bộ hóa đúng cách.

Hashtable là gì?

Không giống như HashMap, Hashtable là một Bản đồ được đồng bộ hóa và nó là luồng an toàn, có nghĩa là nó có thể được chia sẻ giữa nhiều luồng. Trong Hashtable, bạn chỉ định một đối tượng có thể được sử dụng làm khóa và giá trị đi kèm với khóa. Hashtable ánh xạ các khóa thành các giá trị với sự trợ giúp của hàm băm. Java cung cấp hàm này dưới dạng phương thức hashcode [] của Object, lớp này ghi đè để cung cấp mã băm thích hợp. Không giống như HashMap, Hashtable không hỗ trợ các giá trị null và các khóa null vì có kiểm tra null trong việc thực hiện phương thức put của Hashtable.

Sự khác biệt giữa HashMap và Hashtable

  1. Khái niệm cơ bản về HashMap Vs. Hashtable

Cả hai đều là các bộ sưu tập dựa trên hàm băm trong Java được sử dụng để lưu trữ dữ liệu theo cặp khóa / giá trị. HashMap là một triển khai Bản đồ dựa trên bảng băm cung cấp hiệu suất không đổi trong thời gian để chèn và định vị các cặp. Hiệu suất có thể được điều chỉnh bằng việc sử dụng các hàm tạo cho phép bạn đặt công suất và hệ số tải của bảng băm. Hashtable cơ bản khá giống với HashMap, thậm chí cả tên phương thức. Nó lưu trữ cặp khóa / giá trị trong bảng băm. Trong Hashtable, bạn chỉ định một đối tượng có thể được sử dụng làm khóa và giá trị đi kèm với khóa.

  1. Đồng bộ hóa HashMap Vs. Hashtable

Cả HashMap và Hashtable đều sử dụng các kỹ thuật băm để lưu trữ các giá trị dựa trên khóa. Giống như HashMap, Hashtable sử dụng các cặp khóa / giá trị để lưu trữ các giá trị trong bảng băm. Tuy nhiên, sự khác biệt chính giữa hai là đồng bộ hóa. HashMap là một Bản đồ không đồng bộ trong khi Hashtable là một Bản đồ được đồng bộ hóa. Điều này có nghĩa là HashMap không an toàn cho luồng và không thể chia sẻ giữa nhiều luồng mà không có mã đồng bộ hóa phù hợp. Ngược lại, Hashtable an toàn cho chuỗi và có thể được chia sẻ giữa nhiều luồng. Hashtable nhanh hơn sử dụng HashMap trong trình bao bọc được đồng bộ hóa, nếu bạn cần sử dụng Bản đồ được đồng bộ hóa.

  1. Khóa Null và Giá trị Null cho HashMap Vs. Hashtable

Lớp HashMap cung cấp một triển khai bản đồ dựa trên cấu trúc dữ liệu Hashtable. Việc triển khai này hỗ trợ tất cả các hoạt động của Map và cho phép nhiều giá trị null nhưng chỉ có một khóa null để nó có thể duy trì các thuộc tính khóa duy nhất. Tuy nhiên, nó không đảm bảo về thứ tự lưu trữ các mục. Mặt khác, Hashtable ánh xạ các khóa thành các giá trị với sự trợ giúp của hàm băm. Không giống như HashMap, Hashtable không hỗ trợ các giá trị null và các khóa null vì có kiểm tra null trong việc thực hiện phương thức put của Hashtable.

  1. Hiệu suất của HashMap Vs. Hashtable

Vì HashMap không phải là Bản đồ được đồng bộ hóa, nó nhanh hơn và tốt hơn Hashtable về hiệu suất và trên thực tế, sử dụng ít bộ nhớ hơn Hashtable. Mặc dù chúng gần như giống hệt nhau, Hashtable chậm hơn một chút so với HashMap nhưng nhanh hơn HashMap được đồng bộ hóa. Do đó, không an toàn khi sử dụng Hashtable với quyền truy cập đa luồng vì chỉ có các phương thức được đồng bộ hóa. Hashtable là bản sao được đồng bộ hóa với HashMap. Các đối tượng không đồng bộ hoạt động tốt hơn khi so sánh với các đối tượng được đồng bộ hóa giống như Hashtable hoạt động tốt hơn trong một môi trường luồng đơn.

HashMap so với Hashtable: Biểu đồ so sánh

NộI Dung:

  • Biểu đồ so sánh
  • Định nghĩa của HashMap
  • Định nghĩa của TreeMap
  • Phần kết luận

HashMap và TreeMap là các lớp Bản đồ và cả hai đều triển khai giao diện Bản đồ. Bản đồ là một đối tượng lưu trữ các cặp khóa-giá trị, trong đó mỗi khóa là duy nhất và có thể có các giá trị trùng lặp. Lớp HashMap sử dụng bảng băm làm cấu trúc dữ liệu. TreeMap sử dụng cây đỏ-đen làm cấu trúc dữ liệu.

Sự khác biệt chính giữa HashMap và Treemap là Bản đồ băm không bảo toàn thứ tự chèn trong khi, Treemap làm. Vì vậy, chúng ta hãy bắt đầu thảo luận về sự khác biệt giữa HashMap và TreeMap với sự trợ giúp của biểu đồ so sánh được hiển thị bên dưới.

Sự khác biệt giữa HashMap, LinkedHashMap và TreeMap?

Nguyễn Ái Thi · Nguyễn Ái Thi 21:10 22/05/2010
6 giờ trước

Sự khác nhau giữa là gì HashMap, LinkedHashMapvà TreeMaptrong Java? Tôi không thấy bất kỳ sự khác biệt nào trong đầu ra vì cả ba đều có keySetvà values. Là Hashtablegì

Map m1 = new HashMap[]; m1.put["map", "HashMap"]; m1.put["schildt", "java2"]; m1.put["mathew", "Hyden"]; m1.put["schildt", "java2s"]; print[m1.keySet[]]; print[m1.values[]]; SortedMap sm = new TreeMap[]; sm.put["map", "TreeMap"]; sm.put["schildt", "java2"]; sm.put["mathew", "Hyden"]; sm.put["schildt", "java2s"]; print[sm.keySet[]]; print[sm.values[]]; LinkedHashMap lm = new LinkedHashMap[]; lm.put["map", "LinkedHashMap"]; lm.put["schildt", "java2"]; lm.put["mathew", "Hyden"]; lm.put["schildt", "java2s"]; print[lm.keySet[]]; print[lm.values[]];
  • java
  • map
879 hữu ích 0 bình luận 571k xem chia sẻ

Video liên quan

Chủ Đề