【问题标题】:What is the difference between the Dictionary class and the Map class in Java?Java 中的 Dictionary 类和 Map 类有什么区别?
【发布时间】:2014-11-12 01:26:00
【问题描述】:

我刚刚看到difference between a HashMap and HashTable。除了明显的同步和非同步区别外,我注意到HashTable 扩展了Dictionary 类,而HashMap 实现了Map。他们都存储<Key, Value> 对,所以有什么区别。我尝试用谷歌搜索,发现关于 SO(1、2 和 3)的问题很少。除了Dictionary 类已过时,我没有发现任何令人满意的东西。你这两个班有区别吗?如果不是,为什么字典类现在已经过时了?

【问题讨论】:

  • 不要认为它是重复的,不。这是在查询 Dictionary 和 Map 之间的区别,这是一个有点不同的问题。那里的一些答案涉及存在差异的事实,但没有一个涉及字典为什么过时的重要问题。
  • @RoddyoftheFrozenPeas 不是真的,不。 HashMap 和 Hashtable 之间差异问题的答案主要与这些类的实现有关。这个问题,通过关注抽象的祖先,更多地询问接口的差异。
  • 值得注意的是,由于历史原因,Java 有很多冗余的类和接口。当一个较旧的类/界面似乎复制了一个较新的类/界面时,不要花太多时间想知道为什么,因为通常创建较新的东西是为了在一些宏伟的计划中更好地组合在一起。在功能上通常差别很小。

标签: java dictionary


【解决方案1】:

Dictionary 是一个抽象类,不包含非抽象方法。现代实践强烈建议在这种情况下使用接口而不是类。 Map就是这样一个接口。

它还使用Enumeration,这也被认为是过时的; Map 使用 Iterator,但不是。

【讨论】:

    【解决方案2】:
    • Dictionary 是一个抽象类,而 Map 是一个接口,因此它更符合 Java 习惯。
    • Dictionary was deprecated early in Java 1.2 并被其更好的接口对应物 Map 取代。这导致人们相信Dictionary 只是一个糟糕的设计选择,Java 人员保留Dictionary 类是为了向后兼容。

    【讨论】:

      【解决方案3】:

      主要区别在于 Dictionary 是一个抽象类,而 Map 是一个接口。 Collections API 使用 Map、List、Set 等接口。

      【讨论】:

        【解决方案4】:

        Dictionary 是 Hashtable 的抽象基类。两者都仍在 JDK 中,以便与旧代码向后兼容。我们预计将使用 Java 1.2 中引入的 HashMap 和 Map 接口的其他实现。

        【讨论】:

          猜你喜欢
          • 2019-05-24
          • 2022-11-09
          • 2011-12-16
          • 2011-11-14
          • 1970-01-01
          • 2012-04-27
          • 2011-08-10
          • 2018-06-19
          • 1970-01-01
          相关资源
          最近更新 更多