Java - Hashtable类


Java - Hashtable类

Hashtable是原始java.util的一部分,是Dictionary的具体实现。

但是,Java 2重新设计了Hashtable,因此它也实现了Map接口。因此,Hashtable现在已集成到集合框架中。它类似于HashMap,但是已同步。

与HashMap一样,Hashtable将键/值对存储在哈希表中。使用Hashtable时,指定用作键的对象,以及要链接到该键的值。然后对密钥进行散列,并将得到的散列代码用作值存储在表中的索引。

以下是HashTable类提供的构造函数列表。

Sr.No 构造函数和描述
1

Hashtable( )

这是它实例化Hashtable类的哈希表的默认构造函数。

2

Hashtable(int size)

此构造函数接受整数参数,并创建一个散列表,其初始大小由整数值大小指定。

3

Hashtable(int size,float fillRatio)

这将创建一个哈希表,其初始大小由size指定,填充率由fillRatio指定。此比率必须介于0.0和1.0之间,并确定哈希表在向上调整大小之前的完整程度。

4

Hashtable(Map <?extends K,?extends V> t)

这构造了具有给定映射的Hashtable。

除了Map接口定义的方法之外,Hashtable还定义了以下方法

Sr.No 方法和描述
1

void clear()

重置和清空哈希表。

2

Object clone( )

返回调用对象的副本。

3

boolean contains(对象值)

如果哈希表中存在某个等于值的值,则返回true。如果未找到该值,则返回false。

4

boolean containsKey(Object key)

如果哈希表中存在等于键的某个键,则返回true。如果找不到密钥,则返回false。

5

boolean containsValue(Object 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("Zara", new Double(3434.34));
      balance.put("Mahnaz", new Double(123.22));
      balance.put("Ayan", new Double(1378.00));
      balance.put("Daisy", new Double(99.22));
      balance.put("Qadir", new Double(-19.08));

      // Show all balances in hash table.
      names = balance.keys();

      while(names.hasMoreElements()) {
         str = (String) names.nextElement();
         System.out.println(str + ": " + balance.get(str));
      }        
      System.out.println();

      // Deposit 1,000 into Zara's account
      bal = ((Double)balance.get("Zara")).doubleValue();
      balance.put("Zara", new Double(bal + 1000));
      System.out.println("Zara's new balance: " + balance.get("Zara"));
   }
}

输出

Qadir: -19.08
Zara: 3434.34
Mahnaz: 123.22
Daisy: 99.22
Ayan: 1378.0

Zara's new balance: 4434.34