区别:
1、HashMap是非synchronized的,HashTable是synchronized的。
2、HashMap可以接受null值(key=null,value=null),HashTable不可以。
3、HashMap的Iterator迭代器是fail-fast的,而Hashtable的enumerator迭代器不是fail-fast的。
所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。
4、ConcurrentHashMap是HashTable的替代者,具有更好的扩展性。