Java之路:Hashtable(哈希表)

哈希表(Hashtable,又称散列表)是早期java.util包中的一部分,同时也是Dictionary接口的一个具体实现。然而,自Java 2起,重新设计了哈希表(Hashtable),以便它也能实现映射(Map)接口。因此现在Hashtable也被集成到类集框架中。它与HashMap相似,但它是同步的。和HashMap一样, Hashtable将关键字/值对存储到散列表中。使用Hashtable时,指定一个对象作为关键字,同时指定与该关键字相关联的值。接着,该关键字被散列,而把得到的散列值作为存储在表中的值的下标。

哈希表仅仅可以存储重载由Object定义的hashCode()和equals()方法的对象。hashCode()方法计算和返回对象的散列码。当然,equals()方法比较两个对象。幸运的是,许多Java内置的类已经实现了hashCode()方法。

例如,大多数常见的Hashtable类型使用字符串(String)对象作为关键字, String实现hashCode()和equals()方法。

Hashtable的构造方法如下:

(1)Hashtable( ) :默认的构造方法。
(2)Hashtable(int size) :创建一个哈希表,该散列表具有由size指定的原始大小。
(3)Hashtable(int size, float fillRatio) :创建一个哈希表,该哈希表具有由size指定的原始大小和由fillRatio指定的填充比。填充比必须介于0.0和1.0之间,它决定了在散列表向上调整大小之前的充满度。具体地说,当元素的个数大于散列表的容量乘以它的填充比时,哈希表被扩展。如果没有指定填充比,则默认使用0.75。
(4)Hashtable(Map m) :创建一个哈希表,该哈希表用m中的元素初始化。哈希表的容量被设为m中元素的个数的两倍,默认的填充因子设为0.75。

除了Hashtable目前实现的,由Map接口定义的方法之外,Hashtable定义的从以前版本遗留下来的方法列在下表中:
在这里插入图片描述

package com.xy.map;

import java.util.Hashtable;

public class HashtableDemo1 {
	public static void main(String[] args) {
		Hashtable<String, Integer> numbers = new Hashtable<String, Integer>();
		numbers.put("one", new Integer(1));
		numbers.put("two", new Integer(2));
		numbers.put("three", new Integer(3));
		Integer n = (Integer)numbers.get("two");
		if(n != null) {
			System.out.println("two = " + n);
		}
	}
}

【结果】
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43555323/article/details/84956302