java中的Hashtable
Hashtable
Hashtable 是 Java 中的一个古老的集合类,它实现了 Map 接口,基于哈希表存储键值对。
Hashtable 是线程安全的,所有方法都用 synchronized 修饰,因此在多线程环境下可以安全使用。
不过,由于它的性能较差,现代开发中更推荐使用 HashMap
Hashtable中的t是小写,t是小写,t是小写,t是小写
因为使用的较少,就简单介绍一下
Hashtable 的特点
1,键值对存储:存储的是键值对key-value,键和值都不能为 null。
2,线程安全:所有方法都是同步的,适合多线程环境,因此性能较差。
3,通过哈希函数计算键的存储位置。
4,存储无序性。元素的顺序不固定,取决于哈希函数的结果。
Hashtable和 HashMap 的区别
1, 实现的方法不一样,继承的父类不一样
2, 底层结构的容量不一样,hashMap是16,Hashtable是11
3, HashMap的key和value都可以是null,但是Hashtable的Key和Value不能是null。否则运行会报错的.
4, HashMap的数据采用的定位是Hash算法,但是Hashtable采用的就是hashcode
5, HashMap的性能较高,但是HashTable较低
常用方法
新增元素的方法:
1,put(K key, V value) 将指定的键值对插入到 Hashtable 中。如果键已存在,则替换旧值并返回旧值;如果键不存在,则返回 null
删除方法:
1, V remove(Object key) 根据键删除对应的键值对,并返回被删除的值。如果键不存在,则返回 null。
Boolean remove(Object key,Object value):删除对应的键名和对应的值。返回的类型是布尔
2, void clear()清空 Hashtable 中的所有键值对。
查找方法:
1,boolean containsKey(Object key) 判断 Hashtable 中是否包含指定的键。如果包含则返回 true,否则返回 false。
2,boolean containsValue(Object value) 判断 Hashtable 中是否包含指定的值。如果包含则返回 true,否则返回 false。
3,int size() 返回 Hashtable 中键值对的数量。
4,boolean isEmpty() 判断 Hashtable 是否为空。如果为空则返回 true,否则返回 false。
5, Enumeration<K> keys() 返回 Hashtable 中所有键的枚举。
6,Enumeration<V> elements() 返回 Hashtable 中所有值的枚举。
7,V get(Object key) 根据键获取对应的值。如果键不存在,则返回 null。
put:将指定的键值对插入到 Hashtable 中
package part;
import java.util.Hashtable;
public class Java01 {
public static void main(String[] args) {
Hashtable<String, String> table = new Hashtable();
table.put("zhansan", "19");
table.put("lisi", "20");
// {lisi=20, zhansan=19}
System.out.println(table);
}
}
remove:根据键删除对应的键值对
package part;
import java.util.Hashtable;
public class Java01 {
public static void main(String[] args) {
Hashtable<String, String> table = new Hashtable();
table.put("zhansan", "19");
table.put("lisi", "20");
// 移除键名是zhansan的这一项
table.remove("zhansan");
// {lisi=20}
System.out.println(table);
}
}
import java.util.Hashtable;
public class Java01 {
public static void main(String[] args) {
Hashtable<String, String> table = new Hashtable();
table.put("zhansan", "19");
table.put("lisi", "20");
// 移除键名是zhansan,并且对应的值是 119,返回的是一个布尔值
Boolean flag1 = table.remove("zhansan", "119");
System.out.println(flag1); // false
// 移除键名是zhansan,并且对应的值是 19,返回的是一个布尔值
Boolean flag2 = table.remove("zhansan", "19");
System.out.println(flag2); // true
System.out.println(table); // {lisi=20}
}
}
判断 Hashtable 中是否包含指定的键和判断是否包含某个值
package part;
import java.util.Hashtable;
public class Java01 {
public static void main(String[] args) {
Hashtable<String, String> table = new Hashtable();
table.put("zhansan", "19");
table.put("lisi", "20");
// 判断 Hashtable 中是否包含指定的键。如果包含则返回 true,否则返回 false。
Boolean isYou = table.containsKey("zhansan");
System.out.println(isYou); // true
// 判断 Hashtable 中是否包含指定的值。如果包含则返回 true,否则返回 false。
Boolean isYou2 = table.containsValue("19");
System.out.println(isYou2); // true
}
}
尾声
准备开始学习java了。
今天学习的第五天,每天都会发文章,我要卷起来。
请小伙伴们监督我,奥利给
出处:https://www.cnblogs.com/ishoulgodo/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!


如果文中有什么错误,欢迎指出。以免更多的人被误导。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体