当前位置: 首页 > news >正文

Day26 HashMap

Day26 HashMap

文章目录

  • Day26 HashMap
    • 一、应用场景
    • 二、特点
    • 三、基本用法
    • 四、面试题

一、应用场景

1、概念: HashMap是Java集合框架中的一种实现类,用于存储键值对。

2、好处: HashMap是一个常用的集合类,适用于需要快速查找和插入键值对的场景。通过合理使用HashMap,可以高效地管理和操作键值对数据 。

二、特点

1、HashMap基于哈希表实现,提供了快速的查找和插入操作。

2、允许使用null作为键和值。

3、不保证元素的顺序,即不保证遍历顺序与插入顺序相同。

4、允许键和值都可以重复(键重复会覆盖旧值)。

理解:无序 + key去重

注意:1.HashMap的key不允许重复,Key是唯一的
2.HashMap的value允许重复

代码理解:

	public static void main(String[] args) {//Key是唯一的,(小杨)去重HashMap<String, Integer> map = new HashMap<>();		map.put("小张", 27);map.put("小宽", 23);map.put("小白", 23);map.put("小杨", 28);map.put("小杨", 29);map.put("小杨", 30);Set<Entry<String,Integer>> entrySet = map.entrySet();for (Entry<String, Integer> entry : entrySet) {System.out.println(entry);}}

三、基本用法

  1. 导入HashMap类

    import java.util.HashMap;
    
  2. 创建HashMap对象

    HashMap<String, Integer> map = new HashMap<>();
    
  3. 添加键值对

    map.put("apple", 10);
    map.put("banana", 5);
    map.put("orange", 8);
    
  4. 获取值

    int quantity = map.get("apple"); // 返回键"apple"对应的值
    
  5. 遍历HashMap

    for (String key : map.keySet()) {int value = map.get(key);System.out.println(key + ": " + value);
    }
    
  6. 检查键是否存在

    boolean containsKey = map.containsKey("apple"); // 检查是否包含键"apple"
    
  7. 删除键值对

    map.remove("banana"); // 删除键"banana"对应的键值对
    
  8. 获取HashMap大小

    int size = map.size(); // 返回HashMap中键值对的数量
    

代码理解:

public class Test01 {/*** 知识点:HashMap的使用*/public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<>();//添加元素map.put("小希", 27);map.put("小空", 23);map.put("小丽", 28);map.put("小光", 36);map.put("小田", 32);map.put("小阳", 28);map.put("小波", 28);//将newMap中所有的元素添加到map集合中HashMap<String, Integer> newMap = new HashMap<>();newMap.put("aaa", 10);newMap.put("bbb", 20);newMap.put("ccc", 30);newMap.put("ddd", 40);map.putAll(newMap);//如果key存在就获取value值,如果不存在就添加Integer putIfAbsent = map.putIfAbsent("小希111", 28);System.out.println("putIfAbsent:" + putIfAbsent);//通过Key获取到对应的ValueInteger integer1 = map.get("小丽");System.out.println("通过Key获取对应的value:" + integer1);//28//通过Key获取对应的value,如果key不存在则返回默认值Integer integer2 = map.getOrDefault("小希111", 888);System.out.println("通过Key获取对应的value:" + integer2);//888//清空集合中的元素//map.clear();System.out.println("判断集合中是否有指定的key:" + map.containsKey("小希"));//trueSystem.out.println("判断集合中是否有指定的value:" + map.containsValue(27));//trueSystem.out.println("判断集合中是否没有元素:" + map.isEmpty());//false//通过key删除映射关系(key+value)map.remove("aaa");//通过key+value删除映射关系(key+value)map.remove("bbb", 20);//通过key替换valuemap.replace("小希", 30);//通过key+value替换valuemap.replace("小空", 23, 25);//获取映射关系的个数(映射关系内包含了key和value)int size = map.size();System.out.println("获取映射关系的个数:" + size);//10//获取map中所有的valueCollection<Integer> values = map.values();System.out.println(Arrays.toString(values.toArray()));//将集合转换为数组,再将数组转换为字符串System.out.println("-----------------------");//遍历 -- keySet()//思路:获取map集合中所有的key放在一个Set集合中,遍历Set集合获取出key,再通过key获取到Map集合中对应的valueSet<String> keySet = map.keySet();for (String key : keySet) {Integer value = map.get(key);System.out.println(key + " -- " + value);}System.out.println("-----------------------");//遍历 -- entrySet()//思路:获取map集合中所有的映射关系对象放在一个Set集合中,遍历Set集合获取出映射关系对象(Key+Value)Set<Entry<String,Integer>> entrySet = map.entrySet();for (Entry<String, Integer> entry : entrySet) {String key = entry.getKey();Integer value = entry.getValue();System.out.println(key + " -- " + value);}}
}

四、面试题

需求:针对于HashMap的value排序

public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<>();		map.put("小希", 27);map.put("小空", 23);map.put("小丽", 28);map.put("小光", 36);map.put("小田", 32);map.put("小阳", 28);map.put("小波", 28);//将map的映射关系对象取出,返回Set集合Set<Entry<String,Integer>> entrySet = map.entrySet();//将Set集合转换为ArrayList集合ArrayList<Entry<String,Integer>> list = new ArrayList<>(entrySet);//利用ArrayList的sort方法去排序list.sort(new Comparator<Entry<String,Integer>>() {@Overridepublic int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {Integer v1 = o1.getValue();Integer v2 = o2.getValue();return Integer.compare(v1, v2);}});//遍历ArrayListfor (Entry<String, Integer> entry : list) {System.out.println(entry);}}

相关文章:

Day26 HashMap

Day26 HashMap 文章目录 Day26 HashMap一、应用场景二、特点三、基本用法四、面试题 一、应用场景 1、概念&#xff1a; HashMap是Java集合框架中的一种实现类&#xff0c;用于存储键值对。 2、好处&#xff1a; HashMap是一个常用的集合类&#xff0c;适用于需要快速查找和插…...

某蓝队面试经验

背景 据小道消息说今年的国护疑似提前到了五月份&#xff0c;所以最近也是HW面试的一个高峰期啊&#xff0c;这里分享一下上次长亭的蓝队面试问题&#xff08;附本人的回答&#xff0c;仅供参考&#xff09; 面试问答 1、谈谈作为蓝队护网过程使用过厂商的设备 这里我回答的…...

【Linux】 centos7安装卸载SQL server(2017、2019)

一、安装配置 准备一个基础Linux配置&#xff1a; 内存为20GB 运行内存为2GB的系统&#xff08;数据库小于2GB安装不了&#xff09; 1、网络配置 我们需要进行网络的连接 进入 cd /ect/sysconfig/network-script/ 编辑文件ifcfg-ens33 vi ifcfg-ens33 Insert键进行编辑 把ONBOO…...

面试算法-110-课程表

题目 你这个学期必须选修 numCourses 门课程&#xff0c;记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出&#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示如果要学习课程 ai 则 必须 先学习课程 bi 。 …...

注册前后端php的检测

首先&#xff0c;在HTML表单中添加一个用于输入密码的文本框&#xff0c;并在其后面添加一个用于显示密码格式要求提示的元素&#xff0c;例如一个 <span> 标签。 <input type"password" id"passwordInput"> <span id"passwordHint…...

Redis:什么是redis?①

一、思想 Redis是一个开源的高性能基于内存key-value数据库&#xff0c;常用作数据库、缓存或消息代理 二、数据类型 String List...

【课程】MyBatisPlus视频教程

MyBatis-Plus是一款非常强大的MyBatis增强工具包,只做增强不做改变. 在不用编写任何SQL语句的情况下即可以极其方便的实现单一、批量、分页等操作。 本套教程基于MyBatis-Plus新2.3版本,详细讲授&#xff1a;集成Mybatis-Plus、 通用CRUD、EntityWrapper条件构造器、ActiveRec…...

如何使用人工智能和ChatGPT来优化营销转化率

人工智能 &#xff08;AI&#xff09; 和营销的交集正在彻底改变企业与客户互动的方式&#xff0c;最终改变营销转化率。人工智能能够分析大量数据、理解模式和自动执行任务&#xff0c;它不仅是一项创新技术&#xff0c;而且是营销领域的根本性转变。这种转变允许更加个性化、…...

Ubuntu 22.04上构建libvirt源码错误解决

当在Ubuntu 22.04上构建libvirt源码时&#xff0c;可能会遇到一些错误。下面是一些常见错误及其解决方法&#xff1a; 1. 错误&#xff1a;Program xmllint’未找到或不可执行 解决方法&#xff1a;安装libxml2-utils sudo apt-get install libxml2-utils2. 错误&#xff1a…...

游戏客户端面经

1&#xff0c;3D的模型怎么显示到2DUI上面 2&#xff0c;C#的ArryList和List的区别 3&#xff0c;接口和抽象类的区别&#xff0c;一般什么时候用接口 4&#xff0c;UGUI怎么渲染的UI&#xff0c;UGUI的层级管理&#xff08;怎么不打断合批&#xff09;&#xff0c;合批流程…...

AS,idea,maven,gradle

Jdk,sdk。提前都是需要下好的。 Maven与gradle的思考&#xff1a; 用AS开发app时&#xff0c;gradle本就有&#xff0c;自己也可以指定&#xff0c;AGP同样。要注意gradle&#xff0c;AGP,jdk版本的事情。还有依赖库。 用idea开发网络程序时&#xff0c;也有内置的maven&…...

ElasTool v3.0 程序:材料弹性和机械性能的高效计算和可视化工具包

分享一个材料弹性和机械性能的高效计算和可视化工具包&#xff1a; ElasTool v3.0。 感谢论文的原作者&#xff01; 主要内容 “弹性和机械性能的高效计算和可视化对于材料的选择和新材料的设计至关重要。该工具包标志着材料弹性和机械性能计算分析和可视化方面的重大进步…...

Redis入门级详解(一)

一、Redis入门介绍 1、什么是Redis? Redis&#xff0c;英文全称是Remote Dictionary Server&#xff08;远程字典服务&#xff09;&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。…...

java算法题每日多道六

138. 随机链表的复制 题目 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对…...

C# 特性(Attribute)

C# 特性&#xff08;Attribute&#xff09; 文章目录 C# 特性&#xff08;Attribute&#xff09;Obsolete语法示例代码 创建自定义特性&#xff08;Attribute&#xff09; Obsolete 这个预定义特性标记了不应被使用的程序实体。它可以让您通知编译器丢弃某个特定的目标元素。例…...

Redis 教程系列之Redis 配置(三)

Redis 配置 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf(Windows 名为 redis.windows.conf)。 你可以通过 CONFIG 命令查看或设置配置项。 语法 Redis CONFIG 命令格式如下: redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME 实例 redis 127.0…...

Java实验03

Code1 package q3;public class Method01{public static void main(String[] args) {class Student{String name;String StuID;public Student(String name,String StuID){this.namename;this.StuIDStuID;}public void speak(String name, String stuID) {//输出学号与姓名Sys…...

安卓studio连接手机之后,一两秒之后就自动断开了。问题解决。

太坑了&#xff0c;安卓studio链接手机之后。几秒之后就断开了。我以为是adb的问题&#xff0c;就重新安装了一下adb。并且在环境变量中配置了Path的路径。然而并没有什么用啊。 经过排查原来是数据心虚了。线的接触不良。导致你刚接通的瞬间有相对较强的电流是因为有瞬间高电压…...

数字科技优化金融供给,内外协同激活新质生产力

来源 | 镭射财经&#xff08;leishecaijing&#xff09; 新一轮产业变革悄然发生&#xff0c;决定产业高度和竞争格局的底层生产力&#xff0c;也正在经历一场从量变到质变的跃迁。新质生产力则是这场跃迁后的最新呈现。 站在新质生产力爆发的时代拐点&#xff0c;金融业达成…...

「Linux系列」Shell 输入/输出重定向

文章目录 一、Shell 输入重定向二、Shell 输出重定向标准输出重定向&#xff1a;标准错误输出重定向&#xff1a;同时重定向标准输出和错误输出&#xff1a;禁用输出&#xff1a; 三、Shell 重定向命令输出重定向&#xff1a;错误输出重定向&#xff1a;标准输出和错误输出同时…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...