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