Trong các bài viết trước, tôi đã giới thiệu với các bạn HashMap và HashTable trong Java. Trong bài này, chúng ta cùng so sánh sự giống nhau và khác nhau giữa chúng.
1. Giống nhau của HashMap và Hashtable
- Cả HashMap và Hashtable đều cài đặt interface Map.
- HashMap và Hashtable đều được sử dụng để lưu trữ dữ liệu ở dạng cặp key và value.
- Cả hai đều đang sử dụng kỹ thuật băm để lưu trữ các khóa duy nhất.
2. Khác nhau của HashMap và Hashtable
HashMap | Hashtable |
HashMap cho phép một key là null và nhiều giá trị null. | Hashtable không cho phép bất kỳ key hoặc giá trị null. |
HashMap không đồng bộ. | Hashtable là đồng bộ. |
HashMap nhanh hơn Hashtable . | Hashtable chậm hơn HashMap. |
HashMap được duyệt bởi Iterator. | Hashtable được duyệt bởi Enumerator và Iterator. |
Iterator trong HashMap là fail-fast. | Enumerator trong Hashtable là không fail-fast. |
HashMap kế thừa lớp AbstractMap. | Hashtable kế thừa lớp Dictionary. |
Chúng ta có thể làm cho HashMap đồng bộ bằng cách gọi phương thức: Map m = Collections.synchronizedMap(hashMap); | Hashtable được đồng bộ nội bộ và không thể hủy đồng bộ hóa. |
HashMap được ưa thích trong các ứng dụng đơn luồng (single-thread). Nếu bạn muốn sử dụng HashMap trong ứng dụng đa luồng (mulit-thread), có thể thực hiện bằng cách sử dụng phương thức Collections.synchronizedMap(). | Mặc dù HashTable có để sử dụng trong các ứng dụng đa luồng (multi-thread), nhưng ngày nay nó ít được sử dụng. Bởi vì, ConcurrentHashMap là lựa chọn tốt hơn HashTable. |
Related posts:
Vector trong Java
A Quick Guide to Spring MVC Matrix Variables
Java Program to Implement Direct Addressing Tables
Từ khóa static và final trong java
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Java Program to Check whether Directed Graph is Connected using DFS
Java Program to Implement Binary Search Tree
Introduction to the Functional Web Framework in Spring 5
A Guide to Java 9 Modularity
Java Program to Check whether Graph is a Bipartite using BFS
Java NIO2 Path API
Java Program to Implement Merge Sort on n Numbers Without tail-recursion
Working with Network Interfaces in Java
Hướng dẫn Java Design Pattern – Chain of Responsibility
Guava Collections Cookbook
Spring WebClient Filters
Introduction to Spring Cloud CLI
Java Program to Implement Stein GCD Algorithm
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
Java Program to Implement D-ary-Heap
Exploring the Spring 5 WebFlux URL Matching
Collection trong java
Logout in an OAuth Secured Application
Tính đóng gói (Encapsulation) trong java
Spring Boot - Introduction
Java Program to Implement Segment Tree
HttpClient Connection Management
Mockito and JUnit 5 – Using ExtendWith
Java Program to Find Strongly Connected Components in Graphs
Java Program to Implement Hash Tables
Java Program to Implement Maximum Length Chain of Pairs
OAuth2 for a Spring REST API – Handle the Refresh Token in AngularJS