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:
String Joiner trong Java 8
Hướng dẫn Java Design Pattern – Chain of Responsibility
Hướng dẫn Java Design Pattern – Template Method
Quick Guide to @RestClientTest in Spring Boot
Guide to ThreadLocalRandom in Java
Java Program to Implement Find all Cross Edges in a Graph
So sánh HashSet, LinkedHashSet và TreeSet trong Java
Java Copy Constructor
Spring Boot - Cloud Configuration Client
Spring MVC Content Negotiation
Spring Boot - Quick Start
Java Program to Find Minimum Element in an Array using Linear Search
Validations for Enum Types
Java 8 Streams peek() API
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Java Program to implement Circular Buffer
Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
Tiêu chuẩn coding trong Java (Coding Standards)
Java Program to Implement Jarvis Algorithm
Java Program to Implement Binary Search Tree
Java Program to Solve the Fractional Knapsack Problem
Posting with HttpClient
Java Program to Implement Queue using Two Stacks
Spring MVC Custom Validation
Kiểu dữ liệu Ngày Giờ (Date Time) trong java
Java Program to Implement Dijkstra’s Algorithm using Set
Java Program to find the maximum subarray sum O(n^2) time(naive method)
A Guide to TreeSet in Java
Java Program to Implement Hash Tables with Quadratic Probing
Các kiểu dữ liệu trong java
Java Timer
Java Program to Implement Sorting of Less than 100 Numbers in O(n) Complexity