Concurrent Hashmap là một lớp đã được giới thiệu trong jdk1.5. Bản đồ băm đồng thời chỉ áp dụng khóa ở cấp nhóm được gọi là phân mảnh trong khi thêm hoặc cập nhật bản đồ. Vì vậy, một bản đồ băm đồng thời cho phép các thao tác đọc và ghi đồng thời vào bản đồ.
HashTable là một lớp kế thừa an toàn luồng được giới thiệu trong Jdk1.1. Nó là một triển khai cơ sở của giao diện Bản đồ. Nó không cho phép các khóa và giá trị rỗng. Bản chất nó được đồng bộ hóa nên hai luồng khác nhau không thể truy cập đồng thời. Hashtable không duy trì bất kỳ thứ tự nào.
Sr. Không. | Phím | HashTable | ConcurrentHashMap |
---|---|---|---|
1 | Cơ bản | HashTable là lớp kế thừa an toàn luồng được giới thiệu trong Jdk1.1 | ConcurrentHashmap là một lớp đã được giới thiệu trong jdk1.5 |
2 | Khóa | Nó áp dụng khóa trên toàn bộ bộ sưu tập | ConcurrentHashMap chỉ áp dụng các khóa ở cấp nhóm được gọi là phân mảnh trong khi thêm hoặc cập nhật bản đồ |
3 | Hiệu suất | Nó chậm hơn ConcurrentHashMap | Nó tốt hơn HashTable |
4. | Không có | Nó không cho phép khóa và giá trị rỗng | Nó cho phép khóa và giá trị rỗng |
Ví dụ về Hashtable
import java.util.ArrayList; import java.util.EnumMap; import java.util.HashMap; import java.util.Hashtable; import java.util.List; import java.util.Map; public class HashtableExample { public static void main(String[] args) { // create Hashtable Hashtable map = new Hashtable(); map.put("HCL", "100"); map.put("DELL", "200"); map.put("IBM", "300"); // print the map for (Map.Entry m : map.entrySet()) { System.out.println(m.getKey() + " " + m.getValue()); } } }
Ví dụ về ConcurrentHashMap
import java.util.ArrayList; import java.util.EnumMap; import java.util.HashMap; import java.util.Hashtable; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class ConcurrentHashMapExample { public static void main(String[] args) { // ConcurrentHashMap Map myMap = new ConcurrentHashMap(); myMap.put("HCL", "1"); myMap.put("DELL", "1"); // print the map for (Map.Entry m : map.entrySet()) { System.out.println(m.getKey() + " " + m.getValue()); } } }