Java中HashMap和ConcurrentHashMap之间的区别
以下是Java中HashMap和ConcurrentHashMap类之间的显着差异。
哈希映射 | 并发哈希映射 | |
---|---|---|
已同步 | HashMap不同步。 | ConcurrentHashMap已同步。 |
线程安全 | HashMap不是线程安全的。 | ConcurrentHashMap是线程安全的。 |
迭代器类型 | HashMap迭代器是快速失败的,并且如果在迭代过程中发生并发修改,则ArrayList会引发ConcurrentModificationException。 | ConcurrentHashMap是故障安全的,并且在迭代过程中永远不会抛出ConcurrentModificationException。 |
空值 | HashMap允许键和值为null。 | ConcurrentHashMap不允许使用空键/值。它将抛出NullPointerException。 |
性能 | HashMap更快。 | ConcurrentHashMap比HashMap慢。 |
从Java版本开始 | 1.2 | 1.5 |
示例
import java.util.ArrayList;import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
public class Tester {
public static void main(String[] args) {
List<String> arrayList = new ArrayList<>();
arrayList.add("A");
arrayList.add("B");
arrayList.add("C");
Iterator<String> iterator = arrayList.iterator();
System.out.println(arrayList);
while (iterator.hasNext()) {
if (iterator.next().equals("C")) {
//允许删除。
iterator.remove();
}
}
System.out.println(arrayList);
List<String> copyOnWriteArrayList = new CopyOnWriteArrayList<>();
copyOnWriteArrayList.add("A");
copyOnWriteArrayList.add("B");
copyOnWriteArrayList.add("C");
Iterator<String> iterator1 = copyOnWriteArrayList.iterator();
System.out.println(copyOnWriteArrayList);
while (iterator1.hasNext()) {
if (iterator1.next().equals("C")) {
try{
iterator1.remove();
}catch(UnsupportedOperationException e){
System.out.println("不允许移除。");
}
}
}
System.out.println(copyOnWriteArrayList);
}
}
输出结果
[A, B, C][A, B]
[A, B, C]
不允许移除。
[A, B, C]
以上是 Java中HashMap和ConcurrentHashMap之间的区别 的全部内容, 来源链接: utcz.com/z/345519.html