使用Hashtable
与HashMap
进行比较的主要优势是什么?因为,Hashtable
的主要优点是同步。
现在,地图也可以使用synchronizedMap()
进行同步。
Map m = Collections.synchronizedMap(hashMap);
答案 0 :(得分:3)
Hashtable
存在于集合框架之前,因此它主要是为了向后兼容而保留。请改用ConcurrentHashMap
。
请注意,存在轻微的语义差异 - Hashtable
不允许空值,而HashMap
允许空值和空键。
答案 1 :(得分:2)
HashTable
很久以前就被弃用了。主要区别在于HashTable
在内部同步,而HashMap
则不是。然而,这被视为一个缺点,因为在单个线程上使用HashTable
会导致在不需要时锁定和解锁的惩罚。
另外,使HashTable
的同步变得不那么有用的另一点是,在序列中执行两个线程安全的操作并不能保证整个序列的原子性,例如可以考虑:
if(key does not exist)
add key
虽然测试存在和添加都是线程安全的,但上面的构造不是,因为另一个线程可能在中间中断它。因此,无论如何都需要外部同步。
因此,我认为这些天没有理由使用HashTable
......