HashMap是HashTable的轻量级实现(非线程安全的实现),它们都实现了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上高于HashTable。
我们看一下源代码
HashMap
Hashtable
Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。
HashMap hm = new HashMap();
hm.put(null, null);
Hashtable ht = new Hashtable();
ht.put(null, null); // java.lang.NullPointerException
我们看一下源代码
HashMap
public V put(K key, V value) {
if (key == null)
return putForNullKey(value);
Hashtable
public synchronized V put(K key, V value) {
// Make sure the value is not null
if (value == null) {
throw new NullPointerException();
}
Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。