概述
1. Hashtable 继承自 Dictionary 而 HashMap继承自AbstractMap ,两者都实现了Map接口。
2. 通过源码分析,Hashtable的put是同步实现的,且不允许value == null ;
HashMap的put方法不是同步实现的,key = value时,调用 putForNullKey方法。
3.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
总结
HashMap | Hashtable |
线程不安全 | 线程安全 |
允许null的键和值 | 不允许null的键和值 |
效率高一点 | 效率稍低 |
方法不是Synchronize的要提供外同步 | 方法是Synchronize的 |
有containsvalue和containsKey方法 | 有contains方法 |
HashMap 是Java1.2 引进的Map接口 的一个实现 | Hashtable 继承于Dictionary 类 |
HashMap是Hashtable的轻量级实现 | Hashtable 比HashMap 要旧 |
参考:
http://www.cnblogs.com/langtianya/archive/2013/03/19/2970273.html
http://blog.csdn.net/shohokuf/article/details/3932967