Hashtable实现一个哈希表(顾名思义),并将键映射到值(例如LinkedHashMap)。Hashtable类允许将非null对象用作键或值。就像HashMap一样,Hashtable有两个影响其性能的参数:初始容量和负载因子。 容量是哈希表中存储桶的数量,初始容量是创建哈希表时存在的容量。 负载因子是在容量自身增加之前允许哈希表获得多大容量的度量。

它是如何工作的?
哈希表使用哈希函数,其目的是计算到插槽(或存储桶)数组中的索引,从中可以找到正确的值。

哈希表工作流程
好处
- 平均查找成本与表中存储的元素数量无关。
- 允许任意插入和删除键值对。
- 在许多情况下搜索树或任何其他表时效率更高。
Hashtable中的构造方法摘要
Hashtable():构造一个具有默认初始容量(11)(与HashMap或LinkedHashMap不同)和负载因子(0.75)的新哈希表。Hashtable(int initialCapacity):构造一个具有指定容量和默认负载因子(0.75)的新哈希表。Hashtable(int initialCapacity, float loadFactor):构造一个具有指定容量和指定负载因子的新哈希表。Hashtable (Map<? extends K, ? extends V> t):使用与给定Map相同的映射构造一个新的哈希表。
Hashtable类中的方法
void clear:清除当前哈希表,该哈希表删除/删除所有键/值对。Object clone():创建此哈希表的浅表副本。V contains(Object value):测试当前值是否映射到哈希表中的任何键。boolean containsKey(Object key):测试哈希表中是否存在指定的键。boolean containsValue(Object value):测试指定的值是否映射到哈希表中的任何键。boolean equals(Object o):将指定的Object与该Map比较是否相等。V get(Object key):返回键所映射到的值;如果此表/映射不包含键的映射关系,则返回null。int hashCode():根据 Map 接口中的定义,返回此表/地图的哈希码值。boolean isEmpty():测试哈希表是否没有键映射到值。V put(K key, V value):将指定的值映射到指定的键。V remove(Object key):从此哈希表中删除指定的键。V replace(K key, V value):仅当当前映射到某个值时,才替换指定键的条目。int size():返回此哈希表中的键数。
有关Hashtable类的主要方法的更多信息,请随时访问原始 Oracle 文档。
从Hashtable中删除所有键并克隆Hashtable
import java.util.*;class HashTableExample {public static void main(String[] arg){Hashtable<Integer, String> hashTable =new Hashtable<Integer, String>();Hashtable<Integer, String> hashTableCopy =new Hashtable<Integer, String>();hashTable.put(1, "javatutorial");hashTable.put(2, "dot");hashTable.put(3, "net");// create a clone of hashtable 'hashTable'hashTableCopy= (Hashtable<Integer, String>)hashTable.clone();System.out.println("values in clone: " + hashTableCopy);hashTable.clear();System.out.println("after clearing: " + hashTable);}}
输出:
values in clone: {1="javatutorial", 2="dot", 3="net"}after clearing: {}
