温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Hashtable 哈希表怎么用

发布时间:2026-10-21 20:42:08 来源:亿速云 阅读:99 作者:小樊 栏目:编程语言

在 Java 中,Hashtable 是 java.util 包下的一个线程安全的哈希表实现,用法和 HashMap 非常相似,但有一些重要区别。


一、基本用法

1. 创建 Hashtable

import java.util.Hashtable;

Hashtable<String, Integer> table = new Hashtable<>();

2. 添加元素(put)

table.put("apple", 10);
table.put("banana", 20);

3. 获取元素(get)

int value = table.get("apple"); // 10

4. 判断是否包含

boolean hasKey = table.containsKey("apple");
boolean hasValue = table.containsValue(20);

5. 删除元素

table.remove("apple");

6. 遍历 Hashtable

方式一:keySet

for (String key : table.keySet()) {
    System.out.println(key + " = " + table.get(key));
}

方式二:entrySet(推荐)

for (var entry : table.entrySet()) {
    System.out.println(entry.getKey() + " = " + entry.getValue());
}

方式三:Enumeration(老式写法)

Enumeration<String> keys = table.keys();
while (keys.hasMoreElements()) {
    String key = keys.nextElement();
    System.out.println(key);
}

二、Hashtable 的特点

✅ 线程安全(方法都加了 synchronized)
✅ 不允许 null 键和 null 值
✅ 无序(不保证顺序)
✅ 继承自 Dictionary(旧 API)

table.put(null, 1);     // 抛 NullPointerException
table.put("a", null);   // 抛 NullPointerException

三、Hashtable vs HashMap(重点)

对比项 Hashtable HashMap
线程安全 ✅ 是 ❌ 否
允许 null ❌ 不允许 ✅ 允许
性能 较慢 较快
推荐使用 不推荐(旧) ✅ 推荐

四、现代推荐替代方案

如果你需要:

  • 线程安全 → 用 ConcurrentHashMap
  • 非线程安全 → 用 HashMap
Map<String, Integer> map = new ConcurrentHashMap<>();

五、简单完整示例

import java.util.Hashtable;
import java.util.Map;

public class Demo {
    public static void main(String[] args) {
        Hashtable<String, Integer> table = new Hashtable<>();

        table.put("A", 1);
        table.put("B", 2);

        for (Map.Entry<String, Integer> e : table.entrySet()) {
            System.out.println(e.getKey() + " -> " + e.getValue());
        }
    }
}

如果你愿意,我也可以帮你对比 Hashtable / HashMap / ConcurrentHashMap 的底层原理,或者讲 哈希冲突、扩容机制。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手