散列表(hashmap)和哈希表(hashtable)的区别

Java集合框架提供了一组集合类。每个班级都有自己的表现优势和劣势。有些类提供了可以按原样使用的完整实现。另一些是抽象的,提供了作为创建集合起点的框架实现。集合实现使用synchronized wrapper框架来提供同步的类,否则实现是不同步的。有几个类提供map接口的实现。...

Java集合框架提供了一组集合类。每个班级都有自己的表现优势和劣势。有些类提供了可以按原样使用的完整实现。另一些是抽象的,提供了作为创建集合起点的框架实现。集合实现使用synchronized wrapper框架来提供同步的类,否则实现是不同步的。有几个类提供map接口的实现。

Java平台包含三个通用的Map实现:HashMap、TreeMap和LinkedHashMap。HashMap和Hashtable是Java中用于在哈希表中存储键/值对的两个集合。Hashtable是一个同步映射,HashMap是一个非同步映射。不过,如果需要使用同步映射,哈希表比在同步包装器中使用哈希映射要快。在Java中,这两个集合都是基于散列的集合,但它们有相当大的差异。我们强调两者之间的一些关键区别,以帮助您更好地理解术语。

 

散列表(hashmap)和哈希表(hashtable)的区别

什么是散列表(hashmap)?

HashMap是一个基于哈希表的Map实现,它为**和定位对提供了恒定的时间性能。HashMap类提供了一个基于哈希表数据结构的映射实现。此实现支持所有映射操作,并允许多个空值,但只允许一个空键。它使用键/值对将值存储在哈希表中。它是一个不同步的映射,这意味着它不是线程安全的,如果没有正确的同步,就不能在多个线程之间共享。

什么是哈希表(hashtable)?

与HashMap不同,Hashtable是一个同步映射,它是线程安全的,这意味着它可以在多个线程之间共享。在Hashtable中,指定一个可以用作键的对象以及与该键一起使用的值。哈希表通过哈希函数将键映射到值。Java以对象的hashcode()方法的形式提供这个函数,类重写该方法以提供适当的hash代码。与HashMap不同,Hashtable不支持null值和null键,因为Hashtable的put方法实现中存在null检查。

散列表(hashmap)和哈希表(hashtable)的区别

 

hashmap和hashtable的区别

  1. HashMap与Hashtable的基础知识

两者都是Java中基于散列的集合,用于将数据存储在键/值对中。HashMap是一个基于哈希表的Map实现,它为**和定位对提供了恒定的时间性能。可以使用构造函数来调整性能,这些构造函数允许您设置哈希表的容量和负载因子。基本哈希表与HashMap非常相似,甚至包括方法名。它将密钥/值对存储在哈希表中。在Hashtable中,指定一个可以用作键的对象以及与该键一起使用的值。

  1. HashMap与Hashtable的同步

HashMap和Hashtable都使用哈希技术来存储基于键的值。与HashMap一样,Hashtable使用键/值对在哈希表中存储值。然而,两者之间的关键区别是同步。HashMap是一个非同步映射,而Hashtable是一个同步映射。这意味着HashMap不是线程安全的,如果没有正确的同步代码,就不能在多个线程之间共享。相反,哈希表是线程安全的,可以在多个线程之间共享。如果需要使用同步映射,Hashtable比在同步包装器中使用HashMap快。

  1. HashMap与Hashtable的空键和空值

HashMap类提供了一个基于哈希表数据结构的映射实现。此实现支持所有映射操作,并允许多个null值,但只允许一个null键,这样就可以维护唯一的键属性。但是,它不保证条目的存储顺序。另一方面,哈希表通过哈希函数将键映射到值。与HashMap不同,Hashtable不支持null值和null键,因为Hashtable的put方法实现中存在null检查。

  1. HashMap与Hashtable的性能比较

因为HashMap不是一个同步映射,所以它在性能方面比Hashtable快得多,而且实际上比Hashtable使用更少的内存。虽然它们实际上是相同的,但Hashtable比HashMap慢一点,但比同步HashMap快一点。本质上,将哈希表与多线程访问结合使用是不安全的,因为只有方法是同步的。Hashtable是HashMap的同步对应项。与同步对象相比,非同步对象的性能更好,就像哈希表在单线程环境中的性能更好一样。

hashmap与hashtable:比较图

 散列表(hashmap)和哈希表(hashtable)的区别

 

总结 - hashmap的(of hashmap) vs. 哈希表(hashtable)

HashMap类提供了一个未排序、无序的映射。因此,当您需要一个映射并且不关心条目的存储顺序时,HashMap就是一个不错的选择。

Hashtable和Vector一样,从史前的Java时代就已经出现了。就像Vector是更现代、更高级的ArrayList的同步对应物一样,Hashtable也是HashMap的同步对应物。但是,类不能同步,所以当我们说Hashtable是一个同步映射时,意味着类的关键方法是同步的。

虽然两者实际上是相同的,但不同之处在于它们的同步方式和执行方式。HashMap在多线程环境中性能更好,而Hashtable在单线程环境中性能更好。

  • 发表于 2021-06-25 20:14
  • 阅读 ( 247 )
  • 分类:互联网

你可能感兴趣的文章

散列表(hashmap)和树状图(treemap)的区别

关键区别–hashmap与treemap 在编程中,有各种机制来收集数据。集合是存储数据的一种方法。编程语言,如Java使用集合。它是一个包含类和接口的框架,用于存储和操作一组数据元素。在普通数组中,有固定数量的元素要存储...

  • 发布于 2020-10-02 05:06
  • 阅读 ( 351 )

等于(equals)和java中的hashcode(hashcode in java)的区别

...等。打印s1和s2的hashCode得到相同的值。hashCode方法可用于HashMap等集合。 等于(equals)和java中的hashcode(hashcode in java)的区别 等于Java中的hashCode equals是Java中的一个方法,它的作用类似于==运算符,后者用于测试对象标识而...

  • 发布于 2020-10-19 00:40
  • 阅读 ( 198 )

通用(generic)和c中的非泛型集合#(non-generic collection in c#)的区别

...小。 一些非泛型集合类是ArrayList、SortedList、Stack、Queue和HashTable。每个集合类实现IEnumerable接口。它有助于使用foreach循环遍历集合中项的元素。 ArrayList是数组的一种替代方法。如果有一个数组可以存储10个元素,它就不能存储20...

  • 发布于 2020-10-24 01:08
  • 阅读 ( 334 )

6个免费的哈希检查程序来检查任何文件的完整性

...希生成。您可以加载HashMyFiles,其中包含需要哈希的文件列表,将其设置为有效,并接收整个列表的哈希。 ...

  • 发布于 2021-03-19 07:54
  • 阅读 ( 336 )

为什么每次服务的密码数据库泄露时都要担心

...在于数据库中。攻击者通过查找表和匹配密码的大量哈希列表来实现这一点。然后可以将哈希值与数据库进行比较。例如,攻击者会知道“password1”的哈希值,然后查看数据库中是否有帐户使用该哈希值。如果他们是,攻击者知...

  • 发布于 2021-04-08 14:27
  • 阅读 ( 177 )

您的密码是如何存储在互联网上的(以及何时您的密码强度无关紧要)

...),它本质上是一个数万亿个不同哈希值及其匹配密码的列表,它们只需查找哈希值,看看是否已经被发现。尝试在Google中输入e38ad214943daad64c102faec29de4afe9da3d。您很快就会发现它是“password1”的SHA-1散列。有关彩虹表如何工作的...

  • 发布于 2021-05-26 07:29
  • 阅读 ( 148 )

散列表(hashmap)和linkedhashmap公司(linkedhashmap)的区别

HashMap和LinkedHashMap是Java平台中最常见和通用的两种Map实现。它们基本上是基于散列的类,彼此非常相似,用于创建映射。Map接口是最后一个主要的Collecti***框架接口,它定义了一组键到值关联(其中键是唯一的)所支持的操作。...

  • 发布于 2021-06-25 20:26
  • 阅读 ( 223 )

散列表(hashmap)和容器(hashset)的区别

...识值。就像Vector和Stack在ArrayList和LinkedList中有替换一样,Hashtable在HashMap中也有替换。它扩展了AbstractMap,使用内部哈希表表示来实现Map接口。与其他通用实现类似,HashMap支持Map的可选方法,允许空值,并且不同步。 什么是哈希...

  • 发布于 2021-06-25 21:32
  • 阅读 ( 329 )

哈希表(hashtable)和词典(dictionary)的区别

Hashtable和Dictionary的主要区别在于,Hashtable是弱类型的数据结构,因此可以添加任何类型的键和值,而Dictionary是强类型的数据结构,因此只能添加满足键和值的指定数据类型的元素。 哈希表和字典是两种主要的数据结构。它们都...

  • 发布于 2021-06-30 21:47
  • 阅读 ( 1645 )

散列(hashing)和加密(encryption)的区别

哈希和加密的主要区别在于,哈希输出不能转换回原始消息,而加密的消息可以转换回原始消息。 重要的是要确保在网上交换信息是安全的。有多种方法可以保证数据的安全。其中两个是散列和加密。散列对数据应用散列函数...

  • 发布于 2021-07-01 01:39
  • 阅读 ( 594 )
保护环境发
保护环境发

0 篇文章

相关推荐