news 2026/7/7 19:43:15

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/7/6 18:52:09

Go语言高性能编程:7个实战技巧提升代码效率

Go语言高性能编程&#xff1a;7个实战技巧提升代码效率 【免费下载链接】go The Go programming language 项目地址: https://gitcode.com/GitHub_Trending/go/go Go语言以其出色的并发性能和简洁语法在系统编程领域广受欢迎&#xff0c;但要在实际项目中充分发挥其性能…

作者头像 李华
网站建设 2026/7/7 18:28:19

Python MATLAB 绘制和弦图,一图看懂实体关系

二、Matlab绘制和弦图 function chord_diagram()% 和弦图绑制 % 数据矩阵&#xff08;对称矩阵&#xff09;matrix [0, 5, 6, 4, 7;5, 0, 3, 8, 2;6, 3, 0, 5, 6;4, 8, 5, 0, 3;7, 2, 6, 3, 0];labels {A组, B组, C组, D组, E组};colors [255, 107, 107;78, 205, 196;69, 1…

作者头像 李华
网站建设 2026/7/6 16:01:29

dify+LLM+echarts打造智能可视化数据分析AI助手

往遇到一些数据分析需求&#xff0c;比如&#xff1a;业务给了1份excel数据&#xff0c;需要开发做个报表对其进行分析&#xff0c;并以图表展示。通常需要了解数据逻辑&#xff0c;进行适当开发&#xff0c;涉及到前后端&#xff0c;费时费力。现在有了AI后&#xff0c;可以用…

作者头像 李华
网站建设 2026/7/7 9:02:17

正点原子imx6ull Qt界面显示bmp280气压值

Qt学习&#xff0c;使用正点原子出厂文件系统&#xff0c;设计简单界面&#xff0c;显示bmp280等气压信息。记录学习过程。 记录学习过程&#xff0c;理清思路。 介绍&#xff1a;之前两个月简单学习了linux的驱动和应用&#xff0c;最近看了Qt&#xff0c;从最简单的Qt去读外设…

作者头像 李华
网站建设 2026/7/6 21:26:28

【量子力学】Hohenberg-Kohn 定理

Hohenberg-Kohn定理&#xff08;简称HK定理&#xff09;是密度泛函理论&#xff08;Density Functional Theory, DFT&#xff09;的基石&#xff0c;由Pierre Hohenberg和Walter Kohn于1964年提出。该定理从量子力学基本原理出发&#xff0c;解决了多电子体系的高效描述问题&am…

作者头像 李华