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:
A Guide to LinkedHashMap in Java
Java Program to Construct an Expression Tree for an Postfix Expression
Introduction to Apache Commons Text
Hướng dẫn Java Design Pattern – Prototype
Quick Guide on Loading Initial Data with Spring Boot
Java Program to Implement Segment Tree
Guide to the Java Clock Class
New Features in Java 10
Sử dụng CyclicBarrier trong Java
Guide to Java 8’s Collectors
REST Web service: Tạo ứng dụng Java RESTful Client với Jersey Client 2.x
Java Program to Find a Good Feedback Vertex Set
Introduction to the Functional Web Framework in Spring 5
Exception Handling in Java
Serialization và Deserialization trong java
Java Program to Implement Sieve Of Eratosthenes
Java Streams vs Vavr Streams
Java Program to Implement Control Table
Default Password Encoder in Spring Security 5
Receive email using POP3
Java Program to Implement Unrolled Linked List
Send email with JavaMail
Java Program to Implement LinkedBlockingQueue API
Java Program to Find the Connected Components of an UnDirected Graph
Spring Security OAuth2 – Simple Token Revocation
Java Program to Perform Quick Sort on Large Number of Elements
A Guide to Concurrent Queues in Java
Iterable to Stream in Java
A Guide to BitSet in Java
Hướng dẫn Java Design Pattern – Transfer Object
Spring Boot - Unit Test Cases
Spring Boot: Customize the Jackson ObjectMapper