news 2026/5/1 5:04:57

Java中Map的多种用法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java中Map的多种用法

1. 创建:5 种一行写法

// ① 传统 Map<String, Integer> map = new HashMap<>(); // ② 不可变(JDK 9+) Map<String, Integer> map = Map.of("a", 1, "b", 2); // ③ 函数式(JDK 8+) Map<String, Integer> map = Stream.of(new Object[][]{{"a", 1}, {"b", 2}}) .collect(Collectors.toMap(o -> (String) o[0], o -> (Integer) o[1])); // ④ Guava 可变 Map<String, Integer> map = Maps.newHashMap(); // ⑤ Guava 不可变 Map<String, Integer> map = ImmutableMap.of("a", 1, "b", 2);

2. 读写:日常 API

map.put("k", 1); // 存 map.get("k"); // 取 map.getOrDefault("k", 0); // 防 NPE map.remove("k"); // 删 map.containsKey("k"); // 判断 map.size(); // 大小

3. 遍历:4 种姿势

// ① entrySet(最快) for (Map.Entry<String, Integer> e : map.entrySet()) { System.out.println(e.getKey() + "=" + e.getValue()); } // ② Java 8 Lambda map.forEach((k, v) -> System.out.println(k + "=" + v)); // ③ keySet for (String k : map.keySet()) { System.out.println(k + "=" + map.get(k)); } // ④ Stream map.entrySet().stream() .filter(e -> e.getValue() > 10) .forEach(e -> System.out.println(e.getKey()));

4. 计算型 Map:merge / compute

// 计数器:单词出现次数 map.merge(word, 1, Integer::sum); // 累加:key 对应的值 + delta map.compute(key, (k, v) -> v == null ? delta : v + delta);

5. 线程安全:3 种锁策略

// ① 全表锁(慢) Map<String, Integer> map = new Hashtable<>(); // ② 分段锁(快) Map<String, Integer> map = new ConcurrentHashMap<>(); // ③ 不可变(无锁) Map<String, Integer> map = ImmutableMap.of("a", 1);

6. 顺序 Map:3 种有序实现

// ① 插入顺序 Map<String, Integer> map = new LinkedHashMap<>(); // ② 访问顺序(LRU) Map<String, Integer> map = new LinkedHashMap<>(16, 0.75f, true); // ③ 排序顺序 Map<String, Integer> map = new TreeMap<>(); // 自然序 Map<String, Integer> map = new TreeMap<>(Comparator.reverseOrder()); // 倒序

7. 空值友好:Optional 链

String name = Optional.ofNullable(map.get("k")) .map(String::valueOf) .orElse("");

8. 黑科技:Map 当作函数缓存

Map<String, Function<Integer, Integer>> funcMap = Map.of( "square", x -> x * x, "cube", x -> x * x * x ); int result = funcMap.getOrDefault("square", x -> x).apply(5); // 25

9. 一行记忆

“HashMap 日常,LinkedHashMap 顺序,TreeMap 排序,ConcurrentHashMap 并发,ImmutableMap 只读,merge 计数,Optional 防空!”

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:03:54

事件驱动通用思路(java版)

何为事件驱动&#xff1f;1 时间范围很大2 真正有用的信息只发生在少数时间3 中间有一大段时间的规则是线性的4 暴力容易超时思路&#xff1a;第一步记录所有事件&#xff0c;第二步按照时间排序&#xff0c;第三步事件发生->先补中间时间->再处理事件&#xff0c;第四步…

作者头像 李华
网站建设 2026/4/25 2:34:15

自动化测试如何学?“我“的学习之道,路线大纲...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、何为自动化测试…

作者头像 李华
网站建设 2026/4/13 22:51:30

【Linux】进程等待与资源回收:父进程的责任

文章目录进程等待与资源回收&#xff1a;父进程的责任一、进程终止方式回顾与深化1.1 回顾&#xff1a;为什么需要进程等待1.2 进程退出的三种方式1.2.1 return退出1.2.2 exit()函数1.2.3 _exit()函数1.3 三种方式的关键区别&#xff1a;缓冲区刷新1.4 退出码的含义二、进程等待…

作者头像 李华
网站建设 2026/4/25 12:46:59

Android16 EDLA 认证测试CTS过程介绍

Android EDLA 认证测试CTS过程介绍 文章目录 Android EDLA 认证测试CTS过程介绍一、前言二、基本环境搭建1、环境说明核心选择原则&#xff08;优先级从高到低&#xff09;2、CTS常用测试命令3、测试结果&#xff08;1&#xff09;CTS完整报告示例&#xff08;2&#xff09;单项…

作者头像 李华
网站建设 2026/4/15 14:29:50

重新定义音乐体验:HyPlayer如何成为网易云音乐的完美替代方案

重新定义音乐体验&#xff1a;HyPlayer如何成为网易云音乐的完美替代方案 【免费下载链接】HyPlayer 仅供学习交流使用 | 第三方网易云音乐播放器 | A Netease Cloud Music Player 项目地址: https://gitcode.com/gh_mirrors/hy/HyPlayer 在数字音乐时代&#xff0c;我们…

作者头像 李华
网站建设 2026/4/15 14:31:09

5步实现基于openpi框架的UR5机械臂AI控制完整指南

5步实现基于openpi框架的UR5机械臂AI控制完整指南 【免费下载链接】openpi 项目地址: https://gitcode.com/GitHub_Trending/op/openpi 工业机器人控制正迎来AI技术革命&#xff0c;传统示教编程难以应对复杂任务变化&#xff0c;而专用AI方案开发周期长、兼容性差。op…

作者头像 李华