当前位置: 首页 > 编程笔记 >

Java中HashTable和ConcurrentHashMap之间的区别

唐默
2023-03-14
本文向大家介绍Java中HashTable和ConcurrentHashMap之间的区别,包括了Java中HashTable和ConcurrentHashMap之间的区别的使用技巧和注意事项,需要的朋友参考一下

并发Hashmap是在jdk1.5中引入的类。并发哈希映射仅在添加或更新映射时在称为片段的存储桶级别应用锁。因此,并发哈希映射允许对映射进行并发读写操作。 

HashTable是在Jdk1.1中引入的线程安全的旧类。它是Map接口的基本实现。它不允许使用null键和值。它本质上是同步的,因此两个不同的线程无法同时访问。Hashtable不维护任何顺序。

序号

哈希表
并发哈希映射

1个

基本的 

 并发Hashmap是在jdk1.5中引入的类

HashTable是Jdk1.1中引入的线程安全的旧类。

2

锁定

它将锁定应用于整个集合 

并发哈希映射仅在添加或更新映射时在称为片段的存储桶级别应用锁

3

性能 

它比并发HashMap慢

比哈希表好 

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) {
      // 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());
      }
   }
}

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());
      }
   }
}
 类似资料:
  • 本文向大家介绍ConcurrentHashMap 和 Hashtable 的区别?相关面试题,主要包含被问及ConcurrentHashMap 和 Hashtable 的区别?时的应答技巧和注意事项,需要的朋友参考一下 ConcurrentHashMap 和 Hashtable 的区别主要体现在实现线程安全的方式上不同。 底层数据结构: JDK1.7的 ConcurrentHashMap 底层采用

  • 问题内容: Java中的ConcurrentHashMap和Hashtable有什么区别? 对于线程化应用程序,哪个更有效? 问题答案: 使用多个存储桶来存储数据。这样可以避免读取锁定,并大大提高了性能。两者都是线程安全的,但是使用显然可以赢得性能。 从using 读取时,没有锁,与之相反,所有操作都只是简单地同步了。 在Java的旧版本中发布,而Java 5+ 则是。 在单线程应用程序中使用是最

  • 本文向大家介绍Java中HashMap和Hashtable之间的区别,包括了Java中HashMap和Hashtable之间的区别的使用技巧和注意事项,需要的朋友参考一下 Hashtable是原始java.util的一部分,是Dictionary的具体实现。但是,Java 2重新设计了Hashtable,使其也实现了Map接口。因此,哈希表现在已集成到集合框架中。它类似于HashMap,但已同步。

  • 问题内容: Java中的a 和a有什么区别? 对于非线程应用程序,哪个更有效? 问题答案: 和在Java中有一些区别: 是同步的,而不是。这对于非线程应用程序更好,因为非同步对象的性能通常优于同步对象。 不允许null键或值。 允许一个键和任意数量的值。 的子类之一是,因此,如果你想要可预测的迭代顺序(默认情况下为插入顺序),则可以轻松地将替换为。如果使用,这将不那么容易。 由于同步对你来说不是问

  • 本文向大家介绍C#中的HashTable和Dictionary之间的区别,包括了C#中的HashTable和Dictionary之间的区别的使用技巧和注意事项,需要的朋友参考一下 HashTable和Dictionary都是用于存储数据的数据结构的类型。这两个数据结构都将存储的数据保存为键值对。 根据这些关键特征之间的区别,我们可以区分HashTable和Dictionary,如下所示: 序号 键

  • 问题内容: 据我所知,它会同步接口中的每个方法,同时返回一个包装器对象,该对象包含将调用委托给实际对象的同步方法(如果我错了,请纠正我)。 我有两个问题: 同步每个方法并具有包装器类有什么区别?有什么方案可以选择一个? 当我们这样做时会发生什么?这是否等同于简单地使用法线? 问题答案: 以下是我从一些(希望正确)的研究中得到的答案: 两者都提供相同程度的同步。如果要遍历Collections.sy