HashMap vs HashSet: Sự khác biệt và so sánh

HashMap và HashSet là hai chức năng khác nhau trong Hashtable. Bảng băm không là gì ngoài cấu trúc dữ liệu nơi bạn có thể ánh xạ các giá trị chính.

Hàm băm là thứ chính trong Hashtable. Ưu điểm chính của bảng Hash là tốc độ khi so sánh với các cấu trúc dữ liệu khác.

Chìa khóa chính

  1. HashMap là cấu trúc dữ liệu lưu trữ các cặp khóa-giá trị, trong khi HashSet lưu trữ các phần tử duy nhất không có giá trị liên quan.
  2. HashMap triển khai giao diện Bản đồ và HashSet triển khai giao diện Set trong Java.
  3. HashSet được hỗ trợ bởi HashMap, sử dụng các giá trị giả cho các khóa để duy trì tập hợp các phần tử duy nhất.

HashMap so với HashSet

HashMap là cấu trúc dữ liệu dựa trên khóa-giá trị cho phép chúng tôi lưu trữ và truy xuất các đối tượng bằng cách sử dụng một chìa khóa duy nhất. HashSet là một cấu trúc dữ liệu dựa trên tập hợp được sử dụng để lưu trữ một tập hợp các đối tượng duy nhất và sử dụng hàm băm để lưu trữ các đối tượng và cung cấp hiệu suất thời gian không đổi.

HashMap so với HashSet

Bản đồ băm là kết hợp của kiểu dữ liệu mảng. Nó là một phần của bộ sưu tập Java. Lớp này có thể được tìm thấy trong Java cho đến khi gói.

Điều này có thể được thực hiện trong giao diện bản đồ của Java, nơi nó lưu trữ dữ liệu trong (KEY, VALUE), được sử dụng để lưu trữ giá trị và truy cập nó bằng khóa.

Khi chúng ta truyền một đối tượng, nó có thể được truy cập bằng một giá trị khóa là một chỉ mục. Chúng tôi có thể đảm bảo rằng khóa trùng lặp nhưng ngụ ý rằng phần tử trước đó tương ứng với khóa.

Các khóa null cũng được lưu trữ trong Bản đồ băm. HashMap chỉ cho phép một khóa null.

Một HashSet chứa một bộ sưu tập duy nhất. Lớp này có thể được tìm thấy trong Java cho đến khi gói.

Nó sử dụng cơ chế của nó được gọi là băm để lưu trữ thông tin của nó vào một bảng băm, phần tử trong bảng được truy cập bởi một giá trị duy nhất được gọi là mã băm mà một lớp đã triển khai bằng cách sử dụng một giao diện đã đặt bên dưới cấu trúc dữ liệu của bảng băm.

Nó không cho phép các giá trị trùng lặp nhưng chúng ta có thể có các giá trị giả. Ưu điểm chính là nó có thể là một giao diện có thể tuần tự hóa và có thể sao chép.

Bảng so sánh

Các thông số so sánhBản đồ bămBộ băm
Giá trị giảHashMap không có giá trị giảHashSet có giá trị giả
Thêm cơ chếHashMap sử dụng kỹ thuật bămHashSet sử dụng đối tượng băm
Tốc độHashMap nhanh hơnHashSet chậm hơn
phương pháp chènPhương thức chèn trong HashMap là Put()Phương thức chèn trong HashSet là Add()
Ví dụ(a-10, b-20, c-70)(10,20,70)

HashMap là gì?

Hashmap có thể được thực hiện bằng cách sử dụng phương pháp (Hash Map hm = HashMap mới (;). Chẳng hạn, công suất ban đầu và hệ số tải được chỉ định có thể được tạo trong HashMap.

Cũng đọc:  Hỗ trợ hợp nhất của Microsoft so với Hỗ trợ cao cấp: Sự khác biệt và so sánh

HashMap có thể làm hỏng các giá trị theo các cách khác nhau. Nó lưu chuỗi dưới dạng khóa. Trong HashMap, các giá trị chính được coi là đối tượng. Nhiệm vụ chính là sắp xếp lại bảng bằng cách sử dụng các giá trị hoặc đối tượng kay. Thời gian tổ chức là O(1) thời gian.

Bởi vì nó là Keys linh hoạt như một thế mạnh của hash map. Chúng tương tự như một mảng, nhưng chúng có “chỉ số” được sử dụng để truy cập dữ liệu, nhưng trong bản đồ băm, chúng tôi sử dụng Khóa để truy cập Giá trị.

Có một số thao tác cơ bản của HashMap như thêm phần tử, truy cập phần tử, thay đổi phần tử, xóa phần tử.

Để thêm một phần tử, chúng ta sử dụng phương thức put(), Để truy cập một phần tử, chúng ta sử dụng phương thức get(), Để thay đổi một phần tử, chúng ta sử dụng phương thức replace(), Để xóa một phần tử, hãy sử dụng phương thức remove().

Tương tự như vậy, có nhiều lệnh và phương thức như xóa, tính toán, hợp nhất, sao chép, kích thước, v.v. hữu ích cho lập trình viên sử dụng HashMap một cách hiệu quả.

HashSet là gì?

HashSet có thể được triển khai theo cú pháp (Hash Set<E> hs = new Hash Set<E>();) xác định dung lượng của bộ băm cũng như không xác định giá trị mặc định của nó sẽ là 16 và hệ số tải sẽ là 0.75.

HashSet(int capacity, float fill Ratio) được sử dụng để thay đổi kích thước dung lượng của hashset, khi các phần tử lớn hơn thì nó phải có khả năng lưu trữ giá trị trong tập hợp, do đó, tập hợp được mở rộng.

Chúng tôi có các thao tác cơ bản giống nhau như thêm, xóa, chứa và kích thước nhưng nó có hiệu suất Thời gian không đổi cho việc này đối với các thao tác cơ bản.

Trong một tập hợp, chúng ta có các hoạt động khác nhau như tập hợp, sự khác biệt của tập hợp, một tập hợp con có lợi thế cho phương pháp hashset.

Trong phép hợp của tập hợp, chúng ta có thể thực hiện thao tác hợp giữa hai tập hợp bằng cách sử dụng phương thức add-all(). Trong sự khác biệt của tập hợp, chúng ta có thể tính toán sự khác biệt giữa hai tập hợp bằng cách sử dụng phương thức remove-all().

Cũng đọc:  ExtJS vs jQuery: Sự khác biệt và So sánh

Trong Tập hợp con, chúng ta có thể thêm một tập hợp con khác của một tập hợp khác bằng cách sử dụng phương thức chứa tất cả (). Khi chúng tôi thêm giá trị hoặc chèn giá trị vào HashSet, nó không thể theo thứ tự được chèn trên cơ sở mã.

Lặp lại các phần tử được trả về không theo thứ tự cụ thể. Chúng ta cũng có thể sử dụng Chỉ mục lưu trữ dữ liệu được liên kết với khóa.

Hầu hết chúng ta có thể sử dụng hashset để truy cập một phần tử ngẫu nhiên từ tập hợp của chúng. Bởi vì nó được truy cập thông qua mã băm, nơi nó là duy nhất để chúng tôi có thể xác định phần tử dễ dàng.

Vì nó không được đồng bộ hóa nên nhiều mối đe dọa có thể được truy cập cùng lúc và có thể được sửa đổi. Nó được thực hiện bằng cách đồng bộ hóa một đối tượng trong tập hợp.

Các giá trị trong một nội dung hoặc thực sự là một đối tượng, chúng ta có thể tạo một đối tượng kiểu chuỗi và có thể được bao bọc trong lớp mà chúng ta chỉ định. Nơi nó lưu trữ số nguyên dưới dạng đối tượng để hạn chế độ phức tạp về thời gian.

Sự khác biệt chính giữa HashMap và HashSet

  1. Yêu cầu đối tượng trong quá trình bổ sung trong HashMap là hai, trong khi trong HashSet, yêu cầu đối tượng trong quá trình bổ sung chỉ là một.
  2. HashMap có bất kỳ số lượng giá trị null nào, nhưng HashSet chỉ có một giá trị null duy nhất.
  3. Cặp khóa-giá trị được lưu trữ trong HashMap, trong khi các đối tượng được lưu trữ trong HashSet.
  4. Khi so sánh với Hashmap, HashSet được sử dụng cho tính duy nhất của dữ liệu.
  5. Ví dụ cho HashMap là {a->4, b->9, c->5}, và ví dụ cho HashSet là {6, 43, 2, 90, 4}.
dự án
  1. https://dl.acm.org/doi/abs/10.1145/2884781.2884869?casa_token=1z9VmoTZC90AAAAA:8-pUqjpp5C0S4rIzg2sMUI4FeuvVH5QIN99WkbSrP1HSwCa13CtZa7lXBKMzm864NI__H8iKBcjMZck
  2. https://ieeexplore.ieee.org/abstract/document/5370764/

Cập nhật lần cuối: ngày 13 tháng 2023 năm XNUMX

chấm 1
Một yêu cầu?

Tôi đã nỗ lực rất nhiều để viết bài đăng trên blog này nhằm cung cấp giá trị cho bạn. Nó sẽ rất hữu ích cho tôi, nếu bạn cân nhắc chia sẻ nó trên mạng xã hội hoặc với bạn bè/gia đình của bạn. CHIA SẺ LÀ ♥️

Để lại một bình luận

Bạn muốn lưu bài viết này cho sau này? Nhấp vào trái tim ở góc dưới cùng bên phải để lưu vào hộp bài viết của riêng bạn!