Java中HashMap和ConcurrentHashMap之间的区别

以下是Java中HashMap和ConcurrentHashMap类之间的显着差异。

 哈希映射并发哈希映射
已同步HashMap不同步。ConcurrentHashMap已同步。
线程安全HashMap不是线程安全的。ConcurrentHashMap是线程安全的。
迭代器类型HashMap迭代器是快速失败的,并且如果在迭代过程中发生并发修改,则ArrayList会引发ConcurrentModificationException。ConcurrentHashMap是故障安全的,并且在迭代过程中永远不会抛出ConcurrentModificationException。
空值HashMap允许键和值为null。ConcurrentHashMap不允许使用空键/值。它将抛出NullPointerException。
性能HashMap更快。ConcurrentHashMap比HashMap慢。
从Java版本开始1.21.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

回到顶部