#  java 中的`Hashtable`

> 原文： [https://beginnersbook.com/2014/07/hashtable-in-java-with-example/](https://beginnersbook.com/2014/07/hashtable-in-java-with-example/)

该类实现了一个哈希表，它将键映射到值。任何非`null`对象都可以用作键或值。`Hashtable`类似于[`HashMap`](https://beginnersbook.com/2013/12/hashmap-in-java-with-example/)，但它是同步的。`HashMap`和`Hashtable`类之间几乎没有什么区别，你可以在以下网址详细阅读：[`HashMap`和`Hashtable`](https://beginnersbook.com/2014/06/difference-between-hashmap-and-hashtable/)之间的区别。

在本教程中，我们将了解如何创建`Hashtable`，如何填充其条目，然后我们将学习如何使用`Enumeration`显示其键值对。在本文的最后，我们将看到`Hashtable`类的`Hashtable`教程和方法。

#### 示例

```java
import java.util.Hashtable;
import java.util.Enumeration;

public class HashtableExample {

 public static void main(String[] args) {

   Enumeration names;
   String key;

   // Creating a Hashtable
   Hashtable<String, String> hashtable = 
              new Hashtable<String, String>();

   // Adding Key and Value pairs to Hashtable
   hashtable.put("Key1","Chaitanya");
   hashtable.put("Key2","Ajeet");
   hashtable.put("Key3","Peter");
   hashtable.put("Key4","Ricky");
   hashtable.put("Key5","Mona");

   names = hashtable.keys();
   while(names.hasMoreElements()) {
      key = (String) names.nextElement();
      System.out.println("Key: " +key+ " & Value: " +
      hashtable.get(key));
   }
 }
}
```

**输出：**

```java
Key: Key4 & Value: Ricky
Key: Key3 & Value: Peter
Key: Key2 & Value: Ajeet
Key: Key1 & Value: Chaitanya
Key: Key5 & Value: Mona
```

#### `Hashtable`教程

*   [`Hashtable`示例](https://beginnersbook.com/2014/07/hashtable-in-java-with-example/ "Hashtable in java with example")
*   [排序`Hashtable`](https://beginnersbook.com/2014/06/how-to-sort-hashtable-in-java/ "How to sort Hashtable in java")
*   [`Hashtable Iterator`示例](https://beginnersbook.com/2014/07/hashtable-iterator-example-java/ "Hashtable Iterator example – Java")
*   [检查`Hashtable`中的键值是否存在](https://beginnersbook.com/2014/07/check-key-value-existence-in-hashtable-example-java/) 
*   [从`Hashtable`中删除映射](https://beginnersbook.com/2014/07/remove-mapping-from-hashtable-example-java/) 
*   [从`Hashtable`中删除所有映射](https://beginnersbook.com/2014/07/remove-all-mappings-from-hashtable-example-java/) 
*   [获取`Hashtable`的大小](https://beginnersbook.com/2014/07/get-size-of-hashtable-example-in-java/)
*   [`Hashtable` vs `HashMap`](https://beginnersbook.com/2014/06/difference-between-hashmap-and-hashtable/)

#### `Hashtable`类的方法：

1）`void clear()`：从`Hashtable`中删除所有键值映射并使其为空。清除此哈希表，使其不包含任何键。

2）`Object clone()`：创建此哈希表的浅表副本。复制哈希表本身的所有结构，但不克隆键和值。这是一项相对昂贵的操作。

3）`boolean contains(Object value)`：测试某个键是否映射到此哈希表中的指定值。此操作比`containsKey`方法更昂贵。
请注意，此方法的功能与`containsValue`相同（它是集合框架中`Map`接口的一部分）。

4）`boolean isEmpty()`：测试此哈希表是否将键没有映射到值。

5）`Enumeration keys()`：返回哈希表中包含的键的枚举。

6）`Object put(Object key, Object value)`：将指定的键映射到此哈希表中的指定值。

7）`void rehash()`：增加哈希表的大小并重新哈希其所有键。

8）`Object remove(Object key)`：从该哈希表中删除键（及其对应的值）。

9）`int size()`：返回 Hashtable 中存在的键值映射的数量。

10）`String toString()`：返回哈希表的等效字符串。

11）`boolean containsKey(Object key)`：测试指定的对象是否是此哈希表中的键。

12）boolean containsValue（Object value）：测试指定的对象是否为此哈希表中的值。如果哈希表中存在某个等于`value`的值，则返回`true`。如果未找到该值，则返回`false`。

13）`Enumeration elements()`：返回哈希表中包含的值的枚举。

14）`Object get(Object key)`：返回指定键映射到的值，如果此映射不包含键的映射，则返回`null`。

#### 参考：

1.  [`Hashtable` javadoc](https://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html)
2.  [`Enumeration` javadoc](https://docs.oracle.com/javase/7/docs/api/java/util/Enumeration.html)