HashMap null可以作爲鍵、值保存。Hashtable不行。HashMap.get()返回null既可以表示key不存在,也可以表示key對應值爲null.Hashtable.get()返回null表示不存在key。
HashMap線程不安全 Hashtable線程安全。put、get、remove、containsKey、contains...方法上面都加了synchronized。但是對於混合使用時就不是線程安全的了。如:
if(table.contains(key)){
table.remove(key);
}
如果您要按自然順序或自定義順序遍歷鍵,那麼TreeMap會更好
ConcurrentHashMap默認分爲16個桶。可以16個線程同時執行寫、刪等常規操作。
他的遍歷是new一個新的數組。這樣iterator既可以使用老的數據。寫的線程也可以併發的完成改變。就不會再拋異常了。
http://www.360doc.com/content/13/0807/16/11947209_305402798.shtml