首先冲多线程安全的角度
HashMap 是线程不安全的
HashTable,ConcurrentHashMap 是线程安全的
在线程安全的基础上从效率角度
HashTable使用synchronized 锁 HashTabled对象 效率低
ConcurrentHashMap 使用synchronized 把每个哈希桶都单独设了一个锁,锁冲突降低,充分利用CAS机制,优化了扩容方式
key的值是否可以为null
HashMap 的 key 允许为 null
HashTable,ConcurrentHashMap 的 key 不允许为 null