Hashtable
是原始java.util
的一部分,它是Dictionary接口的具体实现。
但是,Java 2中重新设计了Hashtable
,它也实现了Map接口。 因此,Hashtable
现在已集成到集合框架中。 它类似于HashMap,但是已实现同步。
与HashMap
一样,Hashtable
将键/值对存储在哈希表中。 使用Hashtable
时,可以指定用作键的对象,以及要链接到该键的值。 然后对键进行散列,并将得到的散列代码用作值存储在表中的索引。
以下是HashTable
类提供的构造函数列表。
编号 | 构造函数 | 描述 |
---|---|---|
1 | Hashtable() |
它实例化Hashtable 类的哈希表的默认构造函数。 |
2 | Hashtable(int size) |
此构造函数接受整数参数,并创建一个散列表,初始大小由size 值指定。 |
3 | Hashtable(int size, float fillRatio) |
这将创建一个哈希表,初始大小由size 指定,填充率由fillRatio 指定。 此比率必须介于0.0 和1.0 之间,并确定哈希表在向上调整大小之前的完整程度。 |
4 | Hashtable(Map < ? extends K, ? extends V > t) |
这构造了具有给定映射的Hashtable 。 |
除了Map
接口定义的方法之外,Hashtable
还定义了以下方法 -
编号 | 方法 | 描述 |
---|---|---|
1 | void clear() |
重置和清空哈希表。 |
2 | Object clone() |
返回调用对象的副本。 |
3 | boolean contains(Object value) |
如果哈希表中存在某个等于value 值,则返回true 。 如果未找到该值,则返回false 。 |
4 | boolean containsKey(Object key) |
如果哈希表中存在等于key 的某个键,则返回true 。 如果未找到键,则返回false 。 |
5 | boolean containsValue(Object value) |
如果哈希表中存在某个等于value 值,则返回true 。 如果未找到该值,则返回false 。 |
6 | Enumeration elements() |
返回哈希表中包含的值的枚举。 |
7 | Object get(Object key) |
返回包含与键关联的值的对象。 如果键不在哈希表中,则返回null 对象。 |
8 | boolean isEmpty() |
如果哈希表为空,则返回true ; 如果它包含至少一个键,则返回false 。 |
9 | Enumeration keys() |
返回哈希表中包含的键的枚举。 |
10 | Object put(Object key, Object value) |
将键和值插入哈希表。 如果键不在哈希表中,则返回null ; 如果键已经在哈希表中,则返回与键关联的先前值。 |
11 | void rehash() |
增加哈希表的大小并重新哈希所有键。 |
12 | Object remove(Object key) |
删除键及其值。 返回与键关联的值。 如果键不在哈希表中,则返回null 。 |
13 | int size() |
返回哈希表中的条目数。 |
14 | String toString() |
返回与哈希表等效的字符串。 |
示例
以下程序演示了此数据结构支持的几种方法 -
import java.util.*;
public class HashTableDemo {
public static void main(String args[]) {
// Create a hash map
Hashtable balance = new Hashtable();
Enumeration names;
String str;
double bal;
balance.put("PHP", new Double(3434.34));
balance.put("Java", new Double(123.22));
balance.put("Python", new Double(1378.00));
balance.put("Golang", new Double(99.22));
balance.put("Kotlin", new Double(-19.08));
// 显示哈希表中的所有关注度。
names = balance.keys();
while(names.hasMoreElements()) {
str = (String) names.nextElement();
System.out.println(str + ": " + balance.get(str));
}
System.out.println("-----------------------------------");
// 将 Java 的关注度加上 1000
bal = ((Double)balance.get("Java")).doubleValue();
balance.put("Java", new Double(bal + 1000));
System.out.println("Java's new balance: " + balance.get("Java"));
}
}
执行上面示例代码,得到以下结果 -
Kotlin: -19.08
Java: 123.22
Python: 1378.0
PHP: 3434.34
Golang: 99.22
-----------------------------------
Java's new balance: 1123.22