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:
Debug a JavaMail Program
Java – Random Long, Float, Integer and Double
Introduction to Netflix Archaius with Spring Cloud
OAuth2 for a Spring REST API – Handle the Refresh Token in AngularJS
Updating your Password
Java Program to Perform Right Rotation on a Binary Search Tree
Java Program to Solve a Matching Problem for a Given Specific Case
A Guide to the finalize Method in Java
Prevent Cross-Site Scripting (XSS) in a Spring Application
Một số ký tự đặc biệt trong Java
Java Program to Show the Duality Transformation of Line and Point
Giới thiệu Google Guice – Dependency injection (DI) framework
Java Program to Generate Date Between Given Range
Spring Boot Actuator
Java Program to Implement Bucket Sort
Quick Guide to Spring MVC with Velocity
Java – Combine Multiple Collections
Java Program to Represent Graph Using Incidence List
Instance Profile Credentials using Spring Cloud
Truyền giá trị và tham chiếu trong java
Introduction to Spring Data MongoDB
Spring WebFlux Filters
Inject Parameters into JUnit Jupiter Unit Tests
HttpClient 4 – Send Custom Cookie
Spring Cloud – Adding Angular
Java Program to Implement Fisher-Yates Algorithm for Array Shuffling
Java Program to Implement VList
Extra Login Fields with Spring Security
REST Web service: Tạo ứng dụng Java RESTful Client với Jersey Client 2.x
How to Manually Authenticate User with Spring Security
Java Program to Implement Meldable Heap
An Intro to Spring Cloud Contract