温馨提示×

温馨提示×

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

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

java Hashtable是什么

发布时间:2026-10-01 05:42:01 来源:亿速云 阅读:98 作者:小樊 栏目:编程语言

在 Java 中,Hashtable 是 Java 早期提供的一个基于哈希表的键值对(Key-Value)集合类,位于 java.util 包中。

下面从几个关键方面说明它是什么、怎么用、以及和现在常用类的区别。


1. 基本概念

java.util.Hashtable<K, V>
  • 存储 键值对(key-value)
  • 底层基于 哈希表(数组 + 链表)
  • key 和 value 都不能为 null
  • 线程安全(synchronized)

示例:

Hashtable<String, Integer> table = new Hashtable<>();
table.put("a", 1);
table.put("b", 2);

System.out.println(table.get("a")); // 1

2. 主要特点

✅ 线程安全

  • Hashtable 的方法(如 put、get)都用 synchronized 修饰
  • 多线程环境下可以直接使用

❌ 性能较低

  • 因为整个方法加锁,并发性能差

❌ 不允许 null

table.put(null, 1);     // 编译通过,运行抛 NullPointerException
table.put("a", null);   // 同样抛异常

3. 常用方法

方法 说明
put(k, v) 添加键值对
get(k) 根据 key 获取 value
remove(k) 删除指定 key
containsKey(k) 是否包含 key
containsValue(v) 是否包含 value
size() 元素个数
keys() 返回 key 的枚举

4. Hashtable vs HashMap(重点)

对比点 Hashtable HashMap
线程安全 ✅ 是 ❌ 否
null key/value ❌ 不允许 ✅ 允许
性能 较低 较高
出现版本 JDK 1.0 JDK 1.2
推荐使用 ❌ 不推荐 ✅ 推荐

5. 为什么现在很少用 Hashtable?

原因:

  1. 性能差(方法级锁)
  2. 设计老旧
  3. 有更好的替代方案

替代方案:

  • 单线程 → HashMap
  • 多线程 →
    • ConcurrentHashMap(推荐)
    • Collections.synchronizedMap()
Map<String, Integer> map = new ConcurrentHashMap<>();

6. 总结一句话

Hashtable 是 Java 早期的线程安全哈希表实现,现在已经不推荐使用了,推荐用 HashMap 或 ConcurrentHashMap 替代。

如果你愿意,我也可以帮你画一张 HashMap / Hashtable / ConcurrentHashMap 对比图,或者讲讲 底层原理(哈希冲突、扩容等)。

向AI问一下细节

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

AI
助
手