发新话题

HashMap和HashTable的区别?

HashMap是HashTable的轻量级实现(非线程安全的实现),它们都实现了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上高于HsahTable。
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接口的一个实现。
快乐渡过每一天,减肥坚持每一天
编辑 回复 快速回复 TOP
讲得很清晰
编辑 回复 快速回复 TOP
多谢!
编辑 回复 快速回复 TOP
请问如何理解 "非线程安全 "?
编辑 回复 快速回复 TOP
好论坛,学习了很多,支持
编辑 回复 快速回复 TOP
发新话题