What are the differences between a HashMap and a Hashtable ?
- HashTable是同步的,HashMap不是。由于通常意义上来讲不加同步锁的效率要高于加了锁的,因此在不要求多线程安全的情况下选择HashMap是比较好的
- HashTable不允许键或者值中存在
null
,HashMap则允许一个为null
的key
,value则不限制null
的数量 - 对于HashMap来讲,有一个子类是
LinkedHashMap
,这个是一个有序的数据结果,因此在后续代码中如果要求排序,那么HashMap要比HashTable转换来的容易的多
总的来说,如果不要求线程安全,则用HashMap
,即是要求线程安全,那么选择ConcurrentHashMap
也是一种更好的选择。HashTable
则尽量不使用,效率不够好,这是一个历史遗留的对象