Java 集合框架Hashtable
原文:https://www.studytonight.com/java/hashtable-in-collection-framework.php
Java Hashtable
是Hashtable
的一种实现,它以键值对的形式存储元素。它不允许空键和空值。它是 HashMap 的同步版本。
它扩展了字典类并实现了映射接口。下面给出了这个类的声明。
Hashtable
声明
public class Hashtable<K,V>extends Dictionary<K,V>implements Map<K,V>, Cloneable, Serializable
要点
- 它包含基于键的值。
- 它包含独特的元素。
- 它不允许空键或空值。
- 它是同步的。
Hashtable
的初始默认容量是 11。
在本教程中,我们将学习创建一个Hashtable
,向其中添加新元素,遍历其元素等。
Hashtable
构造器
| 构造器 | 描述 |
| Hashtable
() | 它创建一个空Hashtable
,该Hashtable
具有初始默认容量和负载系数。 |
| Hashtable
(整数容量) | 它接受一个整数参数,并创建一个包含指定初始容量的Hashtable
。 |
| Hashtable
(整数容量,浮点加载因子) | 它用于创建具有指定初始容量和加载因子的Hashtable
。 |
| Hashtable
(映射 extends K,? extends V> t) | 它使用与给定映射相同的映射创建一个新的Hashtable
。 |
示例:创建Hashtable
让我们举一个例子来创建Hashtable
,该Hashtable
包含字符串和Integer
类型对的元素。最初它是空的,所以如果我们打印它,它会显示空括号。我们将在下一个例子中学习添加元素。
import java.util.*;
class Demo
{
public static void main(String args[])
{
// Creating Hashtable
Hashtable<String,Integer> hashtable = new Hashtable<String,Integer>();
// Displaying Hashtable
System.out.println(hashtable);
}
}
{}
Hashtable
方法
| 方法 | 描述 |
| 清空() | 它清空了Hashtable
。 |
| 对象克隆() | 它返回Hashtable
的一个浅拷贝。 |
| v 计算(K 键,双功能 super K,? super V,? extends V>重映射功能) | 它计算指定键及其当前映射值的映射。 |
| v 计算不存在(K 键,功能 super K,? extends V>映射功能) | 它使用给定的映射函数计算其值。 |
| 枚举元素() | 它返回Hashtable
中值的枚举。 |
| Set Hashtable
中键的枚举。 |
| 设置Hashtable
中插入带有指定键的指定值。 |
| 见 putAll(映射 extends K,? extends V> t) | 它用于将映射中的所有键值对复制到Hashtable
中。 |
| 电压值 | 如果指定的键还没有与值相关联(或者被映射为 null),则将它与给定值相关联并返回 null,否则返回当前值。 |
| 布尔删除(对象键,对象值) | 它从Hashtable
中移除具有关联的指定键的指定值。 |
| 电压更换(K 键,电压值) | 它替换指定键的指定值。 |
| toString()字符串 | 它返回Hashtable
对象的字符串表示形式。 |
| 集合值() | 它返回映射中包含的值的集合视图。 |
| 布尔包含(对象值) | 如果Hashtable
中存在与该值相等的值,则该方法返回 true,否则返回 false。 |
| 布尔包含值(对象值) | 如果Hashtable
中存在与该值相等的值,则该方法返回 true,否则返回 false。 |
| 布尔包含键(对象键) | 如果Hashtable
中存在与该键相等的键,则该方法返回 true,否则返回 false。 |
| boolean isEmpty() | 如果Hashtable
为空,此方法返回 true 如果至少包含一个键,则返回 false。 |
| 受保护的空隙重新灰化() | 它用于增加Hashtable
的大小并重新哈希其所有键。 |
| 获取(对象键) | 此方法返回包含与键关联的值的对象。 |
| 移除(对象键) | 它用于移除键及其值。此方法返回与键关联的值。 |
| int 大小() | 此方法返回Hashtable
中的条目数。 |
向Hashtable
添加元素
为了在Hashtable
中插入元素,我们使用了put()
方法来添加新元素。它需要两个参数:第一个是关键,第二个是价值。
import java.util.*;
class Demo
{
public static void main(String args[])
{
// Creating Hashtable
Hashtable<String,Integer> hashtable = new Hashtable<String,Integer>();
// Adding elements
hashtable.put("a",100);
hashtable.put("b",200);
hashtable.put("c",300);
hashtable.put("d",400);
// Displaying Hashtable
System.out.println(hashtable);
}
}
{b=200,a=100,d=400,c=300}
示例:不允许空值
由于Hashtable
不允许空键或空值,因此强制插入空值会引发错误。见下面的例子。
import java.util.*;
class Demo
{
public static void main(String args[])
{
// Creating Hashtable
Hashtable<String,Integer> hashtable = new Hashtable<String,Integer>();
// Adding elements
hashtable.put("a",100);
hashtable.put("b",200);
hashtable.put("c",300);
hashtable.put("d",400);
hashtable.put(null, 0); // error: no null allowed
// Displaying Hashtable
System.out.println(hashtable);
}
}
线程“main”Java . lang . nullpointerexception 中出现异常
示例:搜索关键字或值
Hashtable
提供了各种方法,如contains()
、containsKey()
等来搜索Hashtable
中的元素。包含()方法搜索指定值,而containsKey()
方法搜索指定键。
import java.util.*;
class Demo
{
public static void main(String args[])
{
// Creating Hashtable
Hashtable<String,Integer> hashtable = new Hashtable<String,Integer>();
// Adding elements
hashtable.put("a",100);
hashtable.put("b",200);
hashtable.put("c",300);
hashtable.put("d",400);
// Displaying Hashtable
System.out.println(hashtable);
// Search for a value
boolean val = hashtable.contains(400);
System.out.println("is 400 present: "+val);
// Search for a key
val = hashtable.containsKey("d");
System.out.println("is d present: "+val);
}
}
{b=200,a=100,d=400,c=300}存在 400:真存在 d 存在:真
示例:遍历Hashtable
我们可以使用循环遍历Hashtable
元素来访问它的元素,并获得所有可用元素的列表。
import java.util.*;
class Demo
{
public static void main(String args[])
{
// Creating Hashtable
Hashtable<String,Integer> hashtable = new Hashtable<String,Integer>();
// Adding elements
hashtable.put("a",100);
hashtable.put("b",200);
hashtable.put("c",300);
hashtable.put("d",400);
// Traversing Hashtable
for(Map.Entry<String, Integer> m : hashtable.entrySet()) {
System.out.println(m.getKey()+" "+m.getValue());
}
}
}
b 200 a 100 d 400 c 300