java中的HsahMap

news/2025/2/1 12:12:58/文章来源:https://www.cnblogs.com/ishoulgodo/p/18696237

HsahMap

HashMap 是 Java 中最常用的集合类之一,它实现了 Map 接口,基于哈希表存储键值对
HashMap的存储是无顺序的
HashMap存储的是键值对(key-value)其中键key是唯一的,值(value)可以重复。
HashMap的底层是数组和链表

HashMap的常见方法

添加方法:
1,put(K key, V value):将键值对插入到 HashMap 中。如果添加的是新的内容,返回null。如果键已经存在,则更新对应的值,返回更新前的值
2,putIfAbsent(K key, V value) 如果没有这个key,新增上去。有这个key,就不新增上去更改方法:
1,replace(K key, V value) 修改数据,将key是张三的,更新为19。如果没有这个key,则不做替换(理解什么也不做)获取方法:
1,get(Object key):根据键获取对应的值。如果键不存在,返回 null。  
2,keySet():返回的类型是Set, 返回的值是HashMap中所有键的集合。
3,values():返回类型是Collection,返回的值是HashMap 中所有值的集合。
4,entrySet():返回 HashMap 中所有键值对的集合。返回的是Set类型。
5,size(): 返回 HashMap 中键值对的数量。返回类型是int删除方法:
1,remove(Object key):根据键删除对应的键值对。移除不存在的键名,返回的是 null  
2,remove(Object key,Object value):删除对应的键名和对应的值。返回的类型是布尔
3,clear():清空 HashMap,移除所有键值对。检查元素:
1,containsKey(Object key):返回的类型是布尔,判断 HashMap 中是否包含指定的键。
2,containsValue(V value) 检查是否包含某个value值,如果包含返回true,不包含返回false
3,isEmpty(): 检查 HashMap 是否为空。返回的是布尔值。克隆方法:
1,lone()来复制一个 HashMap 对象,返回值是一个对象,因此需要使用强制转化,是一个浅拷贝。
总结:下次学习某个类型的方法,也像这样归一下类。会好很多。

新增数据 put

package part;
// HashMap在java->util这个包下
import java.util.HashMap;
public class Java01 {public static void main(String[] args)  {HashMap map = new HashMap();map.put("zhangsan", "18");map.put("lisi", "17");// 输出 {lisi=17, zhangsan=18}System.out.println(map);}
}

put新增内容,返回null, 如果键已经存在,则更新对应的值

package part;
// HashMap在java->util这个包下
import java.util.HashMap;
public class Java01 {public static void main(String[] args)  {HashMap map = new HashMap();map.put("zhangsan", "18");// 如果添加的是新的内容,返回null。System.out.println(map.put("lisi", "17"));// 这次的键名和第一次的键名,重复了,就会出现覆盖哈。因为键名是唯一的。如果键已经存在,返回更新前的值。输出18System.out.println( map.put("zhangsan", "25"));// 输出 {lisi=17, zhangsan=25}System.out.println(map);}
}

HashMap存储的是键值对,键key是唯一的


package part;
// HashMap在java->util这个包下
import java.util.HashMap;
public class Java01 {public static void main(String[] args)  {HashMap map = new HashMap();map.put("zhangsan", "18");map.put("lisi", "17");// 这次的键名和第一次的键名,重复了,就会出现覆盖哈。因为键名是唯一的map.put("zhangsan", "25");// 输出 {lisi=17, zhangsan=25}System.out.println(map);}
}

putIfAbsent 如果没有这个key,新增上去。 有这个key,就不新增上去

package part;
// HashMap在java->util这个包下
import java.util.HashMap;
public class Java01 {public static void main(String[] args) {HashMap map = new HashMap();map.put("zhangsan", "18");// 如果没有这个key,新增上去。 有这个key,就不新增上去map.putIfAbsent("zhangsan", "19");System.out.println(map);}
}

修改数据:替换replace

package part;
// HashMap在java->util这个包下
import java.util.HashMap;
public class Java01 {public static void main(String[] args) {HashMap map = new HashMap();map.put("zhangsan", "18");// 将key是张三的,更新为19。如果没有这个key,则不做替换(理解什么也不做)map.replace("zhangsan", "199");// 什么也不会做map.replace("lisi", "19");System.out.println(map); // {zhangsan=199}}
}

keySet():返回 HashMap 中所有键的集合。


package part;
// HashMap在java->util这个包下
import java.util.HashMap;
import java.util.Set;
public class Java01 {public static void main(String[] args) {HashMap map = new HashMap();map.put("zhangsan", "18");map.put("lisi", "19");// keySet():返回 HashMap 中所有键的集合,返回类型是SetSet set = map.keySet();System.out.println(set); // [lisi, zhangsan]}
}

values():返回 HashMap 中所有值的集合

package part;
// HashMap在java->util这个包下
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;public class Java01 {public static void main(String[] args) {HashMap map = new HashMap();map.put("zhangsan", "18");map.put("lisi", "19");// map.values():返回 HashMap 中所有值的集合。类型是: CollectionCollection list = map.values();System.out.println(list); // [19, 18]}
}

增强for循环遍历

public class Java01 {public static void main(String[] args) {HashMap map = new HashMap();map.put("zhangsan", "18");map.put("lisi", "19");// 获取所有键名的集合Set set = map.keySet();for (Object key : set) {// 输出 19  18System.out.println(map.get(key));}}
}

containsKey(Object key):判断 HashMap 中是否包含指定的键,返回是一个布尔值

package part;
// HashMap在java->util这个包下
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;public class Java01 {public static void main(String[] args) {HashMap map = new HashMap();map.put("zhangsan", "18");map.put("lisi", "19");// containsKey(Object key):判断 HashMap 中是否包含指定的键。返回是一个布尔值Boolean bool = map.containsKey("zhangsan");System.out.println(bool); // true}
}

containsValue(V value) 检查是否包含某个value值,如果包含返回true,不包含返回false


package part;
// HashMap在java->util这个包下
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;public class Java01 {public static void main(String[] args) {HashMap map = new HashMap();map.put("zhangsan", "18");map.put("lisi", "19");// containsValue(V value) 检查是否包含某个value值,如果包含返回true,不包含返回falseSystem.out.println( map.containsValue("19")); // true}
}

entrySet():返回 HashMap 中所有键值对的集合。


package part;
// HashMap在java->util这个包下
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Java01 {public static void main(String[] args) {// 键名是字符串,键值也是字符串,我们使用的是泛型进行约束HashMap<String, String> map = new HashMap();map.put("zhangsan", "18");map.put("lisi", "19");// 下面的 Map.Entry 是一个接口,固定这样写的Set<Map.Entry<String, String>> keyItem = map.entrySet();for (Map.Entry<String, String> entry : keyItem) {// 遍历每一项 // lisi 19// zhangsan 18System.out.println(entry);}}
}

remove(Object key) 删除

package part;
import java.util.HashMap;
public class Java01 {public static void main(String[] args) {// 键名是字符串,键值也是字符串,我们使用的是泛型进行约束HashMap<String, String> map = new HashMap();map.put("zhangsan", "18");map.put("lisi", "19");// 会把张三这个键名给删除掉。此时map就只有lisi这一项了map.remove("zhangsan");// 删除 键名是lisi,它的值是 100的这一项,返回值是一个布尔类型的Boolean flag= map.remove("lisi","100");System.out.println(flag); // falseSystem.out.println(map);}
}

clone浅拷贝,返回类型是对象,需要强制转换

package part;
import java.util.HashMap;
public class Java01 {public static void main(String[] args) {// 键名是字符串,键值也是字符串,我们使用的是泛型进行约束HashMap<String, String> map = new HashMap();map.put("zhangsan", "18");map.put("lisi", "19");// clone是浅拷贝,并且返回来的是一个对象,因此需要强制转换的哈HashMap<String,String> newMap= (HashMap<String,String>)map.clone();// {zhangsan=18, lisi=19}System.out.println(newMap);}
}

尾声

准备开始学习java了。
今天学习的第五天,每天都会发文章,我要卷起来。
请小伙伴们监督我,奥利给

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

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

相关文章

MyBatis的增删改查实现

首先还是使用上一篇文章相同的数据表和实体类,如下图所示1 package com.loubin.pojo;2 3 public class User {4 private int id;5 private String name;6 private String pwd;7 8 public int getId() {9 return id; 10 } 11 12 public void …

Reqable:现代化 API 调试工具

Reqable 是一款专为开发者设计的现代化 API 调试工具,旨在简化 API 开发、测试和调试的流程。 它支持多种协议(如 HTTP、HTTPS、WebSocket 等),并提供了丰富的功能,帮助开发者更高效地构建、调试和分析 API 请求与响应。 Reqable 以其简洁的设计、强大的功能和卓越的性能,…

DeepSeek-R1?别信新闻,它真能打败 OpenAI?

Yy DeepSeek-R1?别信新闻 它真的是那个打败 OpenAI 的开源黑马模型,还是又一条假新闻? Fabio Matricardi它真的那么厉害……是在哪方面? 前言:DeepSeek在大模型小型以及优化的道路上探索蒸馏和纯强化学习的路径获得的一点成绩确实让美国人紧张了一把,但同时也招致了更严格…

6.演讲比赛流程管理系统

基于STL的演讲比赛流程管理系统。1.需求2.文件目录3.代码 3.1Speaker.h #pragma once #include<iostream> using namespace std;class Speaker {public:string m_Name;double m_Score[2];};3.2SpeechManager.h #pragma once #include<iostream> #include<vector…

Qwen2.5-VL:更强大的多模态大模型|附实测结果

模型更新简述 几天前,通义千问更新了最新的多模态大模型Qwen2.5-VL,拥有包含 3B、7B 和 72B 在内的 3 个模型尺寸,同时完全开源,可在huggingface和modelscope下载到所有模型权重。 1. 更灵活的时空维度处理 ● 空间维度上,动态地将不同尺寸的图像转换为不同长度的token,并…

第五节上,图像分类实战,食物分类

随机种子固定随机结果,方便复现 def seed_everything(seed):torch.manual_seed(seed)torch.cuda.manual_seed(seed)torch.cuda.manual_seed_all(seed)torch.backends.cudnn.benchmark = Falsetorch.backends.cudnn.deterministic = Truerandom.seed(seed)np.random.seed(seed)o…

对比使用DeepSeek与文新一言,了解DeepSeek的关键技术论文

DeepSeek是国内大模型技术的新秀,最近也在业界和媒体界火爆出圈,所以想学习一下其技术。 大模型时代,学习知识,当然首先想到利用大模型,由于在过去一年,对DeepSeek使用不多,所以想和文新一言(4.0 Turbo)对比使用。 通过对比,针对同一个问题“DeepSeek发扬开源文化,将…

Cisco NX-OS Software Release 10.5(2)F - 网络操作系统软件

Cisco NX-OS Software Release 10.5(2)F - 网络操作系统软件Cisco NX-OS Software Release 10.5(2)F - 网络操作系统软件 NX-OS 网络操作系统 请访问原文链接:https://sysin.org/blog/cisco-nx-os-10/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.orgCisco NX-OS…

pdf处理--tts(待重写)

1.提取正文2.裁剪页眉 https://smallpdf.com/cn/crop-pdf#r=crop-pages3.拆分4.ocr 效果图--白描:效果图--4Videosoft PDF Converter Ultimate:5.阅读器与tts引擎 开源阅读:https://github.com/gedoor/legado tts-server-android:https://github.com/jing332/tts-server-an…

INFINI Labs 产品更新 | Console 发布 TopN 功能,Easysearch 新增 Rollup 能力等

INFINI Labs 产品全新发布!此次更新为大家带来了 Console 的全新 TopN 功能,让您能够更高效地定位最关键的节点或索引;Easysearch 新增 Rollup 能力,大幅提升监控指标的存储周期并优化分析体验;此外,Framework 还修复了多项缺陷并进行了多处优化。欢迎下载体验,探索更多…

03-一个例子

登录被测系统bysms双击运行runserver.bat 访问页面:http://127.0.0.1/mgr/sign.html 账号:byhy,密码:88888888 可以直接在pycharm的Terminal中运行hytest,不需要打开命令行窗口 浏览器驱动的打印信息: 禁止 chromedriver 日志写屏1 from selenium import webdriver 2 3 …

blog tips

markdown 内嵌 html 使图片并排点击查看代码 <div style="display: flex; gap: 10px; justify-content: space-between;"><img src="图片1地址" style="width: 49%; height: auto;"/><img src="图片2地址" style="…