哈希表和哈希映射

时间:2013-03-31 03:45:00

标签: java collections hashmap hashtable

hashmap和hashtable的内部数据结构有何不同,它们在以下差异中表现出来?

  1. Hashmap允许一个空键,而hashtable不允许。
  2. Hashmap不保证要维护的顺序 - 虽然我还没有读过哈希表。
  3. 我认为他们两个本质上都是内部的“桶”数组。

3 个答案:

答案 0 :(得分:2)

虽然他们都使用哈希值来识别其中的元素。所以他们无法保证订单。对于你提到的不同,这是因为他们扩展了不同的抽象类。 Dictionary是一个抽象的映射类,键必须是非null值。只有一个建议,对于这种问题,你可以在JDK中找到更多的东西,不要害怕检查它。

public class Hashtable<K,V>
    extends Dictionary<K,V>
    implements Map<K,V>, Cloneable, java.io.Serializable {

public class HashMap<K,V>
    extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable

答案 1 :(得分:0)

是内部都维护阵列桶。我可以看到Hashtable类的方法是synchronized,其中HashMap方法不是。

供参考

答案 2 :(得分:0)

除非您正在研究考古学,否则您应该使用HashMap和ConcurrentHashMap(线程安全)。请将它们分配给Map接口实例,除非您使用特定于其中的方法。