• 1.摘要
  • 2.基本信息
  • 3.基本简述
  • 4.简单操作
  • 5.哈希表
  • 6.哈希表排序

Hashtable

类实现一个哈希表,该哈希表将键映射到相应的值。任何非null对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现hashCode方法和equals方法。Hashtable 的实例有两个参数影响其性能:初始容量和加载因子。

基本信息

  • 中文名

    哈希表

  • 外文名

    HashTable

  • 参数影响

    初始容量 和加载因子

  • 实现

    hashCode方法和equals方法

  • 用途

    存储和获取对象

基本简述

Hashtable 的实例有两个参数影响其性能:初始容量 和加载因子。容量 是哈希表中桶 的数量,初始容量 就是哈希表创建时的容量。注意,哈希表的状态为 open:在发生“哈希冲突”的情况下,单个桶会存储多个条目,这些条目必须按顺序搜索。加载因子 是对哈希表在其容量自动增加之前可以达到多满的一个尺度。初始容量和加载因子这两个参数只是对该实现的提示。关于何时以及是否调用 rehash 方法的具体细节则依赖于该实现。

通常,默认加载因子(.75)在时间和空间成本上寻求一种折衷。加载因子过高虽然减少了空间开销,但同时也增加了查找某个条目的时间(在大多数 Hashtable 操作中,包括 get 和 put 操作,都反映了这一点)。

初始容量主要控制空间消耗与执行 rehash 操作所需要的时间损耗之间的平衡。如果初始容量大于 Hashtable 所包含的最大条目数除以加载因子,则永远 不会发生 rehash 操作。但是,将初始容量设置太高可能会浪费空间。

如果很多条目要存储在一个 Hashtable 中,那么与根据需要执行自动 rehashing 操作来增大表的容量的做法相比,使用足够大的初始容量创建哈希表或许可以更有效地插入条目。

下面这个示例创建了一个数字的哈希表。它将数字的名称用作键:

Hashtable numbers

= new Hashtable();

numbers.add("one", 1);

numbers.add("two", 2);

numbers.add("three", 3);

要获取一个数字,可以使用以下代码:

Integer n = numbers.get("two");

if (n != null) {

System.out.println("two = " + n);

}

}

在JAVA中使用put方法

如: