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

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 防空!”

http://www.cnnetsun.cn/news/41411.html

相关文章:

  • 深入解析Oracle SQL调优健康检查工具(SQLHC):从原理到实战优化
  • 5分钟上手shUnit2:Shell脚本单元测试终极指南
  • uni-app新手避坑指南:从零开始搭建跨平台应用
  • 深入浅出 ES Module
  • wangEditor处理ppt动画效果转网页兼容
  • 深度残差网络在智能垃圾分类中的技术实践与性能分析
  • wangEditor导入MathType公式保留矢量格式
  • Node.js BFF层实战:对接天远综合多头借贷/逾期/欺诈聚合接口
  • Day11 >> 150、逆波兰表达式求值 + 239、滑动窗口最大值 + 347、前K个高频元素
  • System Informer 终极指南:从零掌握Windows系统监控神器
  • 20、集群节点与实例的添加和删除操作指南
  • 5大React动画库生态对比:从入门到精通的全栈解决方案
  • 2、Oracle Real Application Clusters (RAC):特性、成本与效益解析
  • Phi-2模型完全攻略:让27亿参数的小巨人成为你的AI助手
  • 30分钟掌握Tauri:用Rust构建你的第一个桌面应用
  • WeChatTweak-macOS开源项目深度参与指南
  • NootRX:让AMD RDNA 2显卡在macOS上完美运行
  • DBeaver崩溃救星:3步紧急恢复SQL脚本的完整方案
  • 项目效率翻倍,做对了什么?
  • 少儿编程考试路径规划:考级与竞赛时间如何平衡?
  • 火星漫游车Rocker-Bogie悬挂系统核心技术深度解析与实战指南
  • ImmortalWrt网络流量监控完全指南:快速排查网络异常与优化带宽分配
  • 青少年编程考级的三大核心价值:目标建立与能力提升
  • 大疆(DJI)前端开发岗位面试经验总结与备战指南
  • AI难?看涂鸦智能、Lark和德勤中国如何借亚马逊云科技突围
  • Kimi-K2-Instruct模型部署指南:从快速入门到生产级优化
  • 企业级系统监控UI架构设计与性能优化实战
  • 多模态智能体如何重塑人机交互:UI-TARS-1.5的三大技术突破与应用前景
  • 快速排序:10分钟掌握高效算法精髓
  • windows著名漏洞——Zerologon(零登录)