(1)HashMap是Hashtable的轻量级实现,它们都实现了Map接口,主要区别在于HashMap允许空(null)键值(key),而Hashtalbe不允许。
(2)HashMap没有contains方法,而是containsValue和containsKey。
(3)Hashtable的方法是线程安全的,而HashMap不是线程安全的。
(4)HashMap使用Iterator,Hashtable使用Enumeration。
(5)HashMap和Hashtable采用的hash/rehash算法都几乎一样,所以性能不会有很大的差异。
(6)在Hashtable中,hash数组默认大小是11,增加的方式是old*2+1。在Has和Map中,hash数组的默认大小是16,而且一定是2的倍数。
(7)hash值的使用不同,Hashtable直接使用对象的hashCode。
总结一下HashMap和Hashtable的区别
HashMap和Hashtable都是Java中实现Map接口的类,主要区别在于HashMap允许空键值,而Hashtable不支持。HashMap没有contains方法,提供containsValue和containsKey。Hashtable的方法线程安全,HashMap则不是。此外,Hashtable使用Enumeration,HashMap使用Iterator。两者的默认大小和增长策略也有所不同,HashMap为16,Hashtable为11。尽管算法相似,但在并发环境下,HashMap需要配合ConcurrentHashMap使用以保证线程安全。

1562

被折叠的 条评论
为什么被折叠?



