在理论上,hashmap和hashtable之间是否存在差异?
我不是指Java(或实现)中给出的具体定义,而是理论上的。散列表不是使用散列的映射...因此是散列映射?
根据Wikipedia,它们是相同的:
在计算中,哈希表(哈希映射)是用于实现关联数组的数据结构(...)
据Wikibooks说,它是一样的:
哈希表或哈希映射是将键与值相关联的数据结构。
关于StackOverflow的一些答案还指出:
Hashtable通常很有用(它们也称为哈希映射)(...)
Hashmap和Hashtable
my stack post
public static void main(String[] args) {
new Thread() {
@Override public void run() {
HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("key0", 10); // Compiler Widens.
hm.put("key1", null);
hm.put("key0", new Integer(16)); // Overridden.
hm.put(null, 20);
hm.put(null, 70);
hm.put(null, null);
System.out.println("HashMap : "+hm); // hm.toString()
Iterator<Entry<String, Integer>> it = hm.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Integer> pair = (Map.Entry<String, Integer>)it.next();
System.out.println(pair.getKey() + " = " + pair.getValue());
it.remove(); // avoids a ConcurrentModificationException
}
// we can conver HashMap to synchronizedMap
Collections.synchronizedMap(hm);
}
}.start();
new Thread() {
@Override public void run() {
Hashtable<String, Integer> ht = new Hashtable<String, Integer>();
try {
ht.put("product1", 12);
ht.put("product2", 13);
ht.put("product2", 14);
// ht.put(null, 20);
// ht.put("product2", null);
System.out.println("hash Table : "+ht);
} catch (NullPointerException nul) {
System.out.println("HashTable will not accept null's eighter in key/value");
IllegalArgumentException iae = new IllegalArgumentException("nulls not accept");
iae.initCause(nul);
throw iae;
}
}
}.start();
}