Dictionary中的Dictionary类和Map类有什么区别?

时间:2014-09-17 20:57:45

标签: java dictionary

我刚看到difference between a HashMap and HashTable。除了明显的同步和非同步差异之外,我注意到HashTable扩展了Dictionary类,而HashMap实现了Map。它们都存储<Key, Value>对,所以有什么区别。我尝试使用谷歌搜索,我发现了几个问题(123)。除了Dictionary类已经过时之外,我没有找到任何令人满意的结果。这两个班级之间有什么区别吗?如果不是,为什么字典类现在已经过时了?

4 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:2)

  • Dictionary是一个抽象类,而Map是一个接口,因此它更像Java-idiomatic。
  • Dictionary was deprecated early in Java 1.2,取而代之的是更好的界面版本Map。这导致认为Dictionary只是一个糟糕的设计选择,而Java人员保留了Dictionary类以实现向后兼容。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

Dictionary是Hashtable的抽象基类。为了向后兼容旧代码,两者仍然在JDK中。我们期望使用HashMap和Java 1.2中引入的Map接口的其他实现。