35. HashMap 拆解,键值对存储探究

35. HashMap 拆解,键值对存储探究哈喽 大家好 我是老陈 这节课一起学习 HashMap HashMap 就像 带索引的电子词典 每个词条 键值对 通过唯一索引 键 快速查找 是 Java 中最常用的键值存储结构 35

欢迎大家来到IT世界,在知识的湖畔探索吧!

哈喽 大家好!

我是老陈,这节课一起学习HashMap,HashMap就像 “带索引的电子词典”—— 每个词条(键值对)通过唯一索引(键)快速查找,是 Java 中最常用的键值存储结构!

35.1 HashMap 的核心特性:哈希存储与键值对映射

HashMap 是 “会自动归类的电子抽屉”,每个抽屉(键)对应唯一物品(值),放入和取出时通过抽屉标签快速定位。它内部基于哈希表实现,通过键的哈希值计算存储位置,就算数据量很大,也能在极短且稳定的时间内完成读写操作。

put (K key, V value):向 HashMap 中添加键值对。键必须是唯一的,而值可以重复。

get(Object key):通过键来获取对应的值。如果键不存在,则返回 null。

remove(Object key):移除指定键的映射,并返回被删除的值。如果键不存在,则返回 null。

package com.map.demo; import java.util.Map; import java.util.HashMap; / * @author 今日头条:老陈说编程 * HashMap的基本特性及键值操作演示 * 本类展示了HashMap的核心特性,包括: * 1. 允许null键和null值 * 2. 键唯一性与值覆盖 * 3. 无序性(不保证插入顺序) * 4. 基本的增删查操作 */ public class HashMapBasicFeatures { public static void main(String[] args) { // 1. 创建HashMap实例 // 使用默认初始容量16和负载因子0.75 // 当元素数量超过容量*负载因子时会自动扩容 Map<String, String> dictionary = new HashMap<>(); // 2. 添加键值对 // 键必须唯一,值可以重复 // 内部通过键的hashCode()和equals()保证唯一性 dictionary.put("java", "面向对象编程语言"); dictionary.put("algorithm", "数据处理逻辑"); // HashMap允许一个键为null,且可以存储在任何位置 // null键的hashCode被特殊处理为0 dictionary.put(null, null); // 输出结果不保证顺序,依赖内部哈希表实现 System.out.println("初始集合:" + dictionary); // 3. 重复键覆盖机制 // 对已存在的键调用put()会替换原值 // 返回值为被替换的旧值(此处为"面向对象编程语言") dictionary.put("java", "Java 21新特性"); System.out.println("覆盖后:" + dictionary); // 4. 查找操作 // 通过键获取值 // 若键不存在返回null System.out.println("查找java:" + dictionary.get("java")); // 5. 删除操作 // 移除指定键的映射,返回被删除的值 // 若键不存在返回null dictionary.remove("algorithm"); System.out.println("删除后:" + dictionary); } }

欢迎大家来到IT世界,在知识的湖畔探索吧!

35.2 核心操作:HashMap 的增删改查

操作 HashMap 就像 “管理带标签的抽屉”—— 用 put 放物品,get 按标签取,remove 撕标签,清晰高效!

put (K key, V value) 方法用于向 HashMap 中添加键值对。如果键已存在,会覆盖原有值并返回旧值;如果键不存在,则返回 null。

containsKey (Object key) 方法用于检查 HashMap 中是否存在指定的键。

get(Object key) 方法用于获取指定键对应的值。如果键存在,返回对应的值;如果键不存在,返回 null。

欢迎大家来到IT世界,在知识的湖畔探索吧!package com.map.demo; import java.util.Map; import java.util.HashMap; / * @author 今日头条:老陈说编程 * HashMap的增删改查及遍历方式演示 * 本类展示了HashMap的基本操作,包括创建、添加元素、更新元素、查询元素以及三种不同的遍历方式 */ public class HashMapOperations { public static void main(String[] args) { // 1. 创建HashMap存储学生成绩 // 使用String类型作为键(学生姓名),Integer类型作为值(成绩) Map<String, Integer> scores = new HashMap<>(); // 添加元素到HashMap中 // 使用put方法添加键值对,如果键已存在则覆盖原有值 scores.put("张三", 90); scores.put("李四", 85); scores.put("王五", 95); // 2. 操作演示 // 检查HashMap中是否存在指定的键 System.out.println("是否存在张三:" + scores.containsKey("张三")); // 输出:true // 根据键获取对应的值 System.out.println("王五的成绩:" + scores.get("王五")); // 输出:95 // 更新已有键对应的值 scores.put("李四", 90); // 将李四的成绩从85更新为90 System.out.println("更新后李四的成绩:" + scores.get("李四")); // 3. 遍历键值对(三种方式) // 方式1:使用entrySet()遍历 // entrySet()返回一个包含Map.Entry对象的Set集合 // 每个Map.Entry对象包含一个键值对,通过getKey()和getValue()方法获取 System.out.println("\n遍历方式1:entrySet()"); for (Map.Entry<String, Integer> entry : scores.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } // 方式2:使用keySet() + get()遍历 // keySet()返回所有键的Set集合,通过遍历键集合再获取对应的值 // 这种方式效率稍低,因为每次get()操作需要进行哈希查找 System.out.println("\n遍历方式2:keySet() + get()"); for (String name : scores.keySet()) { System.out.println(name + ":" + scores.get(name)); } // 方式3:使用values()遍历 // values()返回所有值的Collection集合,只能获取值,无法获取键 System.out.println("\n遍历方式3:values()"); for (Integer score : scores.values()) { System.out.println("成绩:" + score); } } }

总结HashMap 的适用场景

快速键值查找:如字典、配置表、缓存等,需要通过键快速获取值的场景。

无顺序要求的数据存储:当不需要按插入顺序或排序遍历,只关注键值映射时。

单线程环境下的高性能需求:相比其他 Map 实现,HashMap 在单线程下读写效率最高。

下期将讲解 TreeMap,记得点赞关注,评论区留下你对 HashMap 的疑问,我们一起解决!

#java##程序员##计算机##软件开发##人工智能##ai##热搜##热门#

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/136377.html

(0)
上一篇 24分钟前
下一篇 9分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信