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:
Generic Constructors in Java
Java Program to Implement the Vigenere Cypher
Java Program to Implement Graph Structured Stack
Spring WebClient vs. RestTemplate
Spring Security Registration – Resend Verification Email
Chuyển đổi từ HashMap sang ArrayList
Checking for Empty or Blank Strings in Java
Spring REST with a Zuul Proxy
Spring Boot - Interceptor
Service Registration with Eureka
Java Program to Implement LinkedHashSet API
Refactoring Design Pattern với tính năng mới trong Java 8
New Features in Java 9
Spring Boot - Hystrix
Spring Boot Gradle Plugin
Lớp Collections trong Java (Collections Utility Class)
How to Use if/else Logic in Java 8 Streams
Java Program to Create a Random Linear Extension for a DAG
Loại bỏ các phần tử trùng trong một ArrayList như thế nào trong Java 8?
Java Program to Perform the Unique Factorization of a Given Number
Control the Session with Spring Security
Java Program to Implement TreeMap API
Java Program to Find Number of Articulation points in a Graph
Spring Boot - Flyway Database
Testing in Spring Boot
Using JWT with Spring Security OAuth
Spring Boot - Creating Docker Image
Java Program to Represent Linear Equations in Matrix Form
Iterable to Stream in Java
Java Program to Implement Binary Tree
The Difference Between map() and flatMap()
Simultaneous Spring WebClient Calls