HashMap和Hashtable两点典型区别:
1.Hashtable是一个线程安全的Map实现,但HashMap是线程不安全的实现,所以HashMap比Hashtable的性能高一点;但如果有多个线程访问同一个Map对象时,使用Hashtable实现类会更好。
2.Hashtable不允许使用null作为key和value,如果试图把null值放进Hashtable中,将会引发NullPointException异常;但HashMap可以使用null作为key和value。
Collections类中提供多个synchronizedXxx()方法,该方法可以将指定集合包装成线程同步集合,如synchronizedMap(new HashMap()),从而解决多线程并发访问集合时的线程安全。
No | 区别 | HashMap | Hashtable |
1 | 推出版本 | JDK1.2 | JDK1.0 |
2 | 性能 | 异步处理、性能高 | 同步处理、性能较低 |
3 | 安全性 | 非线程安全 | 线程安全 |
4 | null操作 | 允许存放null | key和value不允许为空 |