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:
Spring WebClient vs. RestTemplate
Remove the First Element from a List
Batch Processing with Spring Cloud Data Flow
Giới thiệu Json Web Token (JWT)
Creating Docker Images with Spring Boot
Refactoring Design Pattern với tính năng mới trong Java 8
HttpClient Connection Management
Java Program to Implement ConcurrentSkipListMap API
Vector trong Java
Tạo chương trình Java đầu tiên sử dụng Eclipse
Java Program to Perform String Matching Using String Library
Java Program to Implement Caesar Cypher
Updating your Password
Working with Network Interfaces in Java
Encode/Decode to/from Base64
So sánh HashSet, LinkedHashSet và TreeSet trong Java
Java – File to Reader
Java Program to Find the Number of Ways to Write a Number as the Sum of Numbers Smaller than Itself
Understanding Memory Leaks in Java
Bootstrap a Web Application with Spring 5
HandlerAdapters in Spring MVC
Quản lý bộ nhớ trong Java với Heap Space vs Stack
Guide to the Java Queue Interface
Java – Reader to Byte Array
Check If a String Is Numeric in Java
Mix plain text and HTML content in a mail
Apache Commons Collections Bag
Java Program to Implement Karatsuba Multiplication Algorithm
Spring Boot With H2 Database
How to Kill a Java Thread
Java Program to Implement Sparse Array
Comparing Strings in Java