HashMap和HashTable都实现了Map接口,他们其中主要的区别就是线程安全方面,效率方面,同步方面。下面细说下
1.HashMap几乎等价于HashTable,容许null键(只可以1个)Value随便。但是HashTable确不行。
2HashMap是非线程安全的,而HashTable是线程安全的
3还有hashMap的迭代器是fail-fast类型的,迭代过程中不容许修改集合(添加删除操作),如果修改会出现个并发修改异常
但remove方法不会出现。 fail-fast(好像底层有个标志,如果发生变化会触发之类的,我也不是太懂,有时间研究下-。-)
而hashTable的迭代器就不是这个机制的
4因为线程安全的原因,如果在单线程的情况下,hashMap的效率会高,而且hasMap的元素次序不是固定不变的
如果想让hashMap实现同步 Collections集合有个方法 Map m = Collections.synchronizeMap(hashMap);
\
\