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:
Java – Combine Multiple Collections
Introduction to Spring Data JDBC
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect
Java Program to Check whether Directed Graph is Connected using DFS
Java Program to Check the Connectivity of Graph Using BFS
Working with Tree Model Nodes in Jackson
Unsatisfied Dependency in Spring
Hướng dẫn Java Design Pattern – Prototype
Removing all Nulls from a List in Java
Tính đa hình (Polymorphism) trong Java
Simplify the DAO with Spring and Java Generics
Java Program to Implement Binary Tree
Setting Up Swagger 2 with a Spring REST API
Java Program to Create a Random Graph Using Random Edge Generation
Java Program to Implement Coppersmith Freivald’s Algorithm
Java Program to Implement Skip List
Convert Character Array to String in Java
Spring Webflux and CORS
A Comparison Between Spring and Spring Boot
Spring Boot - Tomcat Deployment
A Guide to the finalize Method in Java
Java Program to Implement Lloyd’s Algorithm
Spring Boot Tutorial – Bootstrap a Simple Application
Lập trình đa luồng trong Java (Java Multi-threading)
Java Program to Implement the Bin Packing Algorithm
LIKE Queries in Spring JPA Repositories
Serverless Functions with Spring Cloud Function
Java Program to Describe the Representation of Graph using Incidence List
Java – Reader to String
Control Structures in Java
Spring Boot - Quick Start
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java