news 2026/6/9 22:06:40

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/6/9 3:47:56

VLC播放器绿色免安装版:终极便携多媒体解决方案

VLC播放器绿色免安装版&#xff1a;终极便携多媒体解决方案 【免费下载链接】VLC播放器绿色免安装版下载 本仓库提供VLC播放器的绿色免安装版本下载。VLC是一款功能强大的多媒体播放器&#xff0c;支持多种音视频格式&#xff0c;且无需安装即可使用&#xff0c;非常适合需要便…

作者头像 李华
网站建设 2026/6/8 19:26:01

多门店小程序商城如何实现高效一体化运营

零售行业数字化转型持续深入推进&#xff0c;多门店小程序商城渐渐变成连锁品牌以及零售企业达成线上线下一体化运营的关键工具&#xff0c;这类系统不但含有商品管理、订单处理以及会员运营&#xff0c;还渐渐融合全渠道销售与智能分析功能&#xff0c;能助力商家突破时空限制…

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

Python--运算符

目录 1.运算符 1.1算数运算符 1.2关系运算符 1.3逻辑运算符 1.4赋值运算符 1.运算符 1.1算数运算符 像 - * / % ** // 这种进行算术运算的运算符, 称为 算术运算符 注意1: / 中不能用 0 作为除数. 否则会 抛出异常 print(10 / 0) 注意2: 整数 / 整数 结果可能是小数…

作者头像 李华
网站建设 2026/6/7 10:52:20

Gumroad开源项目:打造创作者专属的数字产品销售平台

Gumroad开源项目&#xff1a;打造创作者专属的数字产品销售平台 【免费下载链接】gumroad 项目地址: https://gitcode.com/GitHub_Trending/gumr/gumroad 在数字化浪潮中&#xff0c;内容创作者们正面临着前所未有的机遇和挑战。如何将自己的创意作品转化为稳定收入&am…

作者头像 李华
网站建设 2026/6/9 15:41:54

本地部署交互式计算平台 JupyterLab 并实现外部访问( Linux 版本)

JupyterLab 是一款非常强大的网页版集成开发环境&#xff0c;是 Jupyter Notebook 的下一代产品&#xff0c;提供了更多的灵活性和交互性&#xff0c;主要用于编写和运行代码、进行数据清理与转换、数值模拟、统计建模、数据可视化、机器学习等多种数据分析和科学计算任务。本文…

作者头像 李华