Trong các bài viết trước, tôi đã giới thiệu với các bạn HashMap và HashSet. Trong bài này, tôi sẽ so sánh sự giống nhau, khác nhau của 2 collection này.
1. Giống nhau của HashMap và HashSet
- Cả hai cấu trúc dữ liệu không duy trì bất kỳ thứ tự cho các phần tử truyền vào.
- Cả hai đều sử dụng phương thức hashCode () và equals () để duy trì tính duy nhất của dữ liệu.
- Cả hai cung cấp cho hiệu suất thời gian là hằng số cho các thao tác chèn (add/ put) và loại bỏ (remove).
- Cả hai đều không đồng bộ (non-synchronized).
2. Khác nhau của HashMap và HashSet
HashSet | HashMap |
HashSet cài đặt (implement) Set interface. | HashMap cài đặt (implement) Map interface. |
HashSet lưu trữ dữ liệu dưới dạng các đối tượng (object). | HashMap lưu trữ dữ liệu dưới dạng cặp khóa-giá trị (key-value). |
Bên trong HashSet sử dụng HashMap. | Bên trong HashMap sử dụng một mảng đối tượng Entry<K, V>. |
HashSet không cho phép các phần tử trùng lặp. | HashMap không cho phép các khóa (key) trùng lặp, nhưng cho phép các giá trị (value) trùng lặp. |
HashSet chỉ cho phép một phần tử null. | HashMap cho phép một khóa (key) null và nhiều giá trị (value) null. |
Thao tác chèn (insert/add) chỉ yêu cầu một đối tượng. | Thao tác chèn (put) yêu cầu hai đối tượng, khóa và giá trị (key-value). |
HashSet hơi chậm hơn HashMap. | HashMap nhanh hơn một chút so với HashSet. |
Sử dụng HashSet khi bạn cần duy nhất dữ liệu (object). | Sử dụng HashSet khi bạn cần duy nhất khóa (key). |
Related posts:
So sánh ArrayList và LinkedList trong Java
Java Program to Implement Variable length array
Java 8 Streams peek() API
HTTP Authentification and CGI/Servlet
Từ khóa throw và throws trong Java
Guide to DelayQueue
Java Program to Implement Regular Falsi Algorithm
OAuth2 for a Spring REST API – Handle the Refresh Token in AngularJS
Spring Cloud AWS – EC2
Introduction to Eclipse Collections
Tổng quan về ngôn ngữ lập trình java
Consumer trong Java 8
Spring Data MongoDB Transactions
Spring Security – security none, filters none, access permitAll
The Java 8 Stream API Tutorial
How to Get All Dates Between Two Dates?
Java Program to Compare Binary and Sequential Search
Guide to the Java Queue Interface
Validations for Enum Types
Using a Mutex Object in Java
A Guide to Spring Boot Admin
Creating a Generic Array in Java
Java Program to Implement Segment Tree
Java Program to Compute Cross Product of Two Vectors
Comparing Strings in Java
A Guide to Apache Commons Collections CollectionUtils
Guide to the Java Clock Class
Guide to the Synchronized Keyword in Java
JWT – Token-based Authentication trong Jersey 2.x
Java Program to Implement the Program Used in grep/egrep/fgrep
XML Serialization and Deserialization with Jackson
Simple Single Sign-On with Spring Security OAuth2