java中的Hashtable

news/2025/2/1 19:40:01/文章来源:https://www.cnblogs.com/ishoulgodo/p/18696449

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); // trueSystem.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了。
今天学习的第五天,每天都会发文章,我要卷起来。
请小伙伴们监督我,奥利给

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/877625.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[HCTF 2018]admin

打开靶机进入登录界面,账号输入admin,密码随便输入一个密码,使用burp抓包后发送到攻击器将密码设为变量,导入字典,开始攻击发现密码"123"的返回长度不同,使用"123"登录,得到flag

DeepSeek LLM

一、背景动机开源社区的关注点:LLaMA 之后,开源社区主要关注训练固定规模的高质量 LLM(如 7B、13B、34B 和 70B),而对 LLM 的缩放定律研究探索较少。缩放定律的重要性:当前开源 LLM 仍处于 AGI 发展的初期阶段,因此研究扩展定律对于未来发展至关重要。缩放结论的分歧:早…

24-25Web开发技术#SpringBoot综合项目实战e1

选用IntelliJ IDEA Community Edition 2024.2 将reggie作为项目(Project)打开 开发环境搭建 系统开发及运行环境 JDK安装尽量遵循原项目的配置,在Oracle官网下载JDK11需注册Oracle账户,较麻烦。 在https://jdk.java.net/archive/找到11 GA (build 11+28)下载Windows版本的压缩…

星球助手发布更新v1.4.0

星球助手发布更新v1.4.0,重要的更新内容有 ​添加了展示评论的功能,可复制评论内容,可展示图片 添加下载评论中的图片的功能 修复了帖子文字展示不全的问题 修复了问答帖子无法搜索的问题 修复了当帖子有多张图片时无法完整显示图片的问题 修复了下载用户信息报错的问题 修复…

CTF-web-POST

1.照样是打开题目链接2.翻译源代码,仍然是向url添加“?what=flag” 3.但是这题需要用hackbar添加4.得到flag

7.机房预约系统

机房预约系统。需求文件目录代码 机房预约系统.cpp #include<iostream> #include "Identity.h" #include<fstream> #include<string> #include "globalFile.h" #include "student.h" #include "teacher.h" #include…

CTF-web-GET

1.打开题目2.翻译原代码,要求添加"?what=flag"3.得到flag:flag{0e8b036fa161804be74c7f33161dc451}

JFrog Artifactory 系列6 --- 其他配置

一、概览 1. 承上启下 JFrog Artifactory 系列 二、其他配置 1. Token过期时间三、参考 https://jfrog.com/help/r/artifactory-intermittent-403-errors-while-working-with-artifactory

新春“码”启 | Cocos 3D 开发微信小游戏(第4天):游戏资源设计和框架核心源代码

新春开发 Cocos 3D 微信小游戏计划的第 4 天,包括游戏资源设计建议,如 UI 背景自适应、碰撞检测组件选用;游戏控制逻辑设计方面,包括组件层级管理及核心代码框架,还有配置中心和消息中心代码,所有的资源与代码均可免费下载……放飞自我的时光总是过得很快,一晃春节就过去…

动手学大模型应用开发,第2天:调用大模型(下)

五、调用智谱 AI 1. ChatGLM 大模型 智谱 AI 是由清华大学计算机系技术成果转化而来的公司,致力于打造新一代认知智能通用模型。公司合作研发了双语千亿级超大规模预训练模型 GLM-130B,并构建了高精度通用知识图谱,形成数据与知识双轮驱动的认知引擎,基于此模型打造了 Chat…

《浅谈树拓扑序计数相关问题的一些方法》阅读笔记

才发现原来我不会拓扑序计数。临时补一下。树拓扑序计数 叶向树拓扑序计数 朴素的做法是 dp 然后归纳,但是论文给出了新解释。 考察一个简单的拓扑序生成方式:你有一个集合,初始为空,每次选择树中不在集合里的一个点,取它最浅的不在集合里的点,加入集合,重复操作 \(n\) …

MyBatis之万能的map

在映射的mxl文件中写sql语句时,可以将parameterType设置为map,这样就可以想传什么就传什么,废话不多说,上代码 insertUser2和insertUser的区别是,前者传递的是map,后者传递的是User类,如果User类的属性很多的话,后者这种传递方式需要定义一个对象,并且实现每一个属性…