【问题标题】:How is Hashtable different to Hashmap [duplicate]Hashtable与Hashmap有何不同[重复]
【发布时间】:2012-10-30 08:48:37
【问题描述】:

可能重复:
Differences between HashMap and Hashtable?

我见过在不同代码中使用的哈希表和哈希映射,但它们看起来好像做同样的事情。它们之间有区别吗?我应该在我的代码中使用哪一个?

【问题讨论】:

  • 是的,主要区别在于 Hashtable 是同步的,而 HashMap 不是。它们也有不同的超类层次结构。 (FWIW,由于在并发环境中使用 HashMap,我曾多次在大型商业应用程序中看到相当严重的故障。)
  • 顺便说一句,它是“HashMap”和“Hashtable”。注意大写。
  • 你考虑过阅读 Javadoc 吗?
  • @HotLicks - “由于在并发环境中使用 HashMap,我曾多次看到大型商业应用程序出现相当严重的故障。” - 但使用 @由于争用问题,987654322@ 也可能不是一个好主意。并发应用程序需要更复杂的思维......如果您希望它们扩展。
  • Hashtable 或多或少已被弃用; ConcurrentHashMap 设计用于在并发环境中工作,但更擅长于并发环境。

标签: java hashmap hashtable


【解决方案1】:

java.util.Hashtable 方法是 同步的java.util.Hashmap 方法不是。如果您使用 Hashtable,则会有 性能损失,因为没有 两个线程 将能够同时访问其方法。 如果您关心应用中的线程安全Hashtable 是您的最佳选择。如果你不关心线程安全 Hashmap 是要走的路,因为它比 hashtable 更有效。 java.util.Hashtable 也不允许任何空键,而 java.util.HashMap 允许一个空键。

【讨论】:

    【解决方案2】:

    Hashtable 是同步的,而 HashMap 不是。这意味着如果您只有一个线程访问数据,请使用 HashMap,否则使用 Hashtable。

    【讨论】:

    • 它的 Hashtable ,注意t:)
    • @GanGnaMStYleOverFlowErroR 哇,没注意到,哈哈 =)
    【解决方案3】:

    HashTable 不允许空键,而 hashmap 允许一个空键

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 2012-03-21
      • 2017-05-18
      • 2012-01-14
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多