HashMap vs Hashtable:区别与比较

HashMap 在 Java 中执行基本的映射接口执行。 Hashtable 是从将键映射到值的 Hashtable 类执行的。 HashMap和Hashtable都是在Java中的map接口中执行的。

因此,它们彼此密切相关,但在许多方面又彼此截然不同。

关键精华

  1. HashMap允许空值,不同步,而HashTable不允许空值,同步。
  2. HashMap比HashTable更快,因为它需要同步。
  3. HashTable 是线程安全的,而 HashMap 不是。

HashMap 与哈希表

当中的差异: 哈希图 与Hashtable不同的是,HashMap允许键和值重复,而Hashtable不允许键和值重复。 HashMap 不是并发的。 因此,它们允许多个线程接近它们,而哈希表是并发的并且不允许多个线程接近它们。

HashMap 与哈希表

Hashmap是Java中存储唯一键和值的数据结构。 HashMap 类组织良好,可以定位值、插入条目和删除条目。

此外,在 HashMap 中找到的条目没有排序。 HashMap 对于线程来说并不安全,因为它允许多个线程访问它们。

Hashtable 跟踪 Java 中声明的变量。 哈希表始终取决于负载因子而不是表中存在的项目数。 因此Hashtable的执行速度非常慢。

哈希表对于多个线程是安全的,因为它不允许多个线程访问它们。

对比表

比较参数哈希图哈希表
并发HashMap 不是并发的,因此它们允许多个线程接近它们,即它们对多个线程不安全。哈希表是并发的,并且对多线程是安全的,因为它不允许多线程接近它们。
迅速的HashMap 的执行速度很快。Hashtable 的执行速度非常慢。
空值接受HashMap 接受键和值的空值。 哈希表不会为键和值启用任何空值。
迭代器迭代器是快速失败的,有时会抛出 ConcurrentModificationException。枚举器不是快速失败的,也不会抛出任何 ConcurrentModificationException。
类继承抽象地图类。词典类。
应用领域HashMap 用于网页和 Web 应用程序。哈希表用于在线拼写检查器和游戏内程序。

什么是哈希表?

HashMap 是唯一键和值的集合,在 Java 中执行基本的映射接口执行。 键可以在列表中作为索引找到,但在 Map 中,它作为对象找到。

另请参阅:  什么是 Amazon Kindle Unlimited 及其工作原理? 快速概述

此外,每个键仅映射到一个值。 HashMap 类有一种系统的方法来定位值、插入和删除条目。

HashMap 有不同类型的构造函数。 哈希表() 构造函数 是一种构造函数,用于清空具有默认初始容量和默认加载因子的 HashMap。

Hashmap 包含重复值,并且 HashMap 中找到的条目没有排序。 例如公共类HashMap 扩展抽象映射 、可克隆、可序列化。

HashMap(intinitialcapacity) 是一种构造函数,用于清空具有指定初始容量和默认加载因子的 HashMap。 此外,HashMap(int初始容量,float加载因子)构造函数以指定的初始容量和加载因子清空HashMap。

HashMap 不是并发的。 因此,它们主要允许多个线程接近它们,并且由于组织良好的行为,执行速度很快。

HashMap(映射m) 用于构建一个新的 HashMap,其先前的映射与指定的 Map 相同。 HashMap 用于网页和 Web 应用程序。

什么是哈希表? 

Hashtable 是并发的,主要从将键映射到值的 Hashtable 类执行。 由于Hashtable的并发特性,多线程不会面对面接近它们。

Hashtable 执行起来非常简单并且具有重复值。 此外,它在 Java 中执行基本的地图接口执行。

在 Hashtable 中,如果发现键是字符串,则哈希函数将它们转换为数值,但如果发现输入键是整数,则使用 Key mod TableSize。

哈希函数很容易计算,但哈希表的执行速度非常慢。 速度慢是因为Hashtable比较大,而且没有分配key。

另请参阅:  Microsoft Virtual Desktop vs Citrix Virtual Apps vs Desktops:差异与比较

哈希表用于执行插入并在恒定的平均时间内查找特定操作。 哈希表主要取决于负载因子而不是其中存在的项目数。

在 Hashtable 中,重要的是要有一个质数 TableSize、正确选择负载因子和哈希函数。

在 Hashtable 中,还存在第二个哈希函数,用于解决冲突。 哈希表在编译器中用于执行符号表、游戏程序(例如换位表)和在线拼写检查器。

之间的主要区别 HashMap 和 Hashtable

  1. HashMap 不是并发的。 因此,它们允许多个线程接近,而 Hashtable 是并发的,并且不允许多个线程接近它们。
  2. 迭代器是快速失败的,有时会抛出 ConcurrentModificationException,而枚举器不是快速失败的,并且不会抛出任何 ConcurrentModificationException。
  3. HashMap 不包含任何重复值,而 Hashtable 包含重复值。
  4. Hashmap 是系统的、条理清晰的,而 Hashtable 是简单的、不是条理清晰的。
  5. 在 Hashmap 中,执行速度很快,而在 Hashtable 中,执行速度很慢。
参考资料
  1. https://link.springer.com/article/10.1007/s10664-021-09950-y
  2. https://dl.acm.org/doi/abs/10.1145/2851613.2851967
  3. https://ieeexplore.ieee.org/abstract/document/5565628/

最后更新时间:26 年 2023 月 XNUMX 日

点1
一个请求?

我付出了很多努力来写这篇博文,为您提供价值。 如果您考虑在社交媒体上或与您的朋友/家人分享,这对我很有帮助。 分享是♥️

关于“HashMap 与 Hashtable:差异与比较”的 21 个思考

  1. 详细解释了 HashMap 和 Hashtable 在并发性、速度和空值接受方面的差异,很有启发性。它强调了在 Java 编程中辨别何时使用每种方法的重要性。

    回复
    • 我同意您关于辨别 HashMap 和 Hashtable 之间差异的重要性的评估,特别是在并发性和速度方面。这些知识对于有效的 Java 编程至关重要。

      回复
    • 您的评论让我们全面了解 HashMap 和 Hashtable 之间的主要区别,特别是在并发性和速度方面。这对于 Java 开发人员来说是很有价值的知识。

      回复
  2. 我很欣赏 HashMap 和 Hashtable 之间的彻底比较,特别是有关并发性、速度和空值接受的细节。这可以让您清楚地了解它们在 Java 中的功能。

    回复
  3. 详细解释了HashMap和Hashtable的差异,特别是在并发性、速度和空值接受方面,对读者很有帮助。了解何时使用每种方法对于高效和优化编程至关重要。

    回复
    • 您的评论准确地概括了理解 HashMap 和 Hashtable 之间的差异对于在 Java 中进行有效编程和实现的重要性。

      回复
  4. 通过对HashMap和Hashtable的并发、速度、空值接受等方面的深入比较,可以清楚地了解它们的差异以及在Java中的应用。

    回复
    • 您就理解 HashMap 和 Hashtable 之间差异的相关性提出了非常丰富的观点,特别是在并发性和空值接受方面。

      回复
    • 我很欣赏您对理解 HashMap 和 Hashtable 差异的重要性的富有洞察力的评论,特别是在并发性和空值接受方面。对于 Java 开发人员来说这是至关重要的知识。

      回复
  5. HashMap 和 Hashtable 的详细解释很有启发性,特别是考虑到 HashMap 不是并发的并且允许空值,而 Hashtable 是并发的并且不接受空值。理解这些区别对于 Java 开发人员来说至关重要。

    回复
    • 您的评论有效地强调了理解 HashMap 和 Hashtable 之间细微差别的重要性。并发性和空值接受方面的差异尤其值得注意。

      回复
    • 我同意您关于理解 HashMap 和 Hashtable 重要性的看法,特别是在并发性和空值接受方面。这是有效 Java 编程的关键知识。

      回复
  6. 理解 HashMap 和 Hashtable 对于 Java 开发人员来说至关重要。对它们在并发性、速度和空值接受方面的差异的解释使您更容易理解它们在各种场景中的应用程序。

    回复
  7. 关于 HashMap 和 Hashtable 的复杂细节都有很好的解释。我发现了解每个方法如何处理并发和空值接受特别重要。

    回复
    • 您对 HashMap 和 Hashtable 中并发性和空值接受的重要性的观察是很敏锐的。这些区别对于 Java 开发人员和程序员至关重要。

      回复
  8. HashMap 和 Hashtable 之间的比较提供了对它们功能的宝贵见解,特别是它们的并发性、速度和空值接受方法。这是Java程序员必备的知识。

    回复
  9. HashMap 和 Hashtable 在 Java 中对于将键映射到值都很重要。它们在映射接口方面是相似的,但它们的差异在于同步和空值接受等因素。关键要点是 HashMap 由于缺乏同步而速度更快,并且它允许空值,而 Hashtable 速度较慢,是同步的并且不允许空值。

    回复
    • 您的评论有效地总结了 HashMap 和 Hashtable 之间的要点和区别。对空值接受和速度的解释清楚地说明了它们的区别。

      回复
    • 我很欣赏您详细的解释,强调了 HashMap 和 Hashtable 的细微差别。很明显,每种语言在 Java 编程中都有自己的优势和用例。

      回复
  10. 比较表阐明了 HashMap 和 Hashtable 之间的差异。值得注意的是每个方法在并发性、速度和空值接受方面的表现。

    回复

发表评论

想保存这篇文章以备后用? 点击右下角的心形收藏到你自己的文章箱!