Java 中 HashTable 和 ConcurrentHashMap 之间的区别
javaobject oriented programmingprogramming更新于 2025/9/7 21:00:17
Concurrent Hashmap 是在 jdk1.5 中引入的一个类。并发哈希映射在添加或更新映射时仅在名为 fragment 的存储桶级别应用锁定。因此,并发哈希映射允许对映射进行并发读写操作。
HashTable 是在 Jdk1.1 中引入的一个线程安全的遗留类。它是 Map 接口的基本实现。它不允许空键和空值。它本质上是同步的,因此两个不同的线程不能同时访问。Hashtable 不维护任何顺序。
| Sr.不。 | Key | HashTable | ConcurrentHashMap |
|---|---|---|---|
1 | Basic | HashTable 是 Jdk1.1 中引入的线程安全的遗留类 | ConcurrentHashmap 是在 jdk1.5 中引入的一个类 |
2 | 锁定 | 它对整个集合应用锁定 | ConcurrentHashMap 仅在名为 fragment 的 bucket 级别应用锁定 在添加或更新map |
3 | 性能 | 比 ConcurrentHashMap 慢 | 它比HashTable更好 |
4. | Null | 它不允许为空的键和值 | 它允许为空的键和值 |
示例哈希表
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) {
// 创建哈希表
Hashtable map = new Hashtable();
map.put("HCL", "100");
map.put("DELL", "200");
map.put("IBM", "300");
// 打印映射
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}
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");
// 打印映射
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

