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

【JAVA架构师成长之路】【JDK源码】第5集:Map集合框架与泛型


课程标题:Map集合框架与泛型(15分钟)

目标:掌握泛型在Map中的键值类型约束,理解类型安全的键值操作,熟练使用泛型Map解决实际问题


0-1分钟:泛型Map的意义引入

以“字典翻译”类比泛型Map:明确键和值的类型(如英文→中文)。说明泛型Map的作用——确保键值对的类型一致性,避免运行时类型错误


1-3分钟:非泛型Map的隐患

演示原生Map的风险操作:

Map rawMap = new HashMap();  
rawMap.put("age", 25);  
rawMap.put(100, "非法键");  // 编译通过,但键类型混乱  
String value = (String) rawMap.get("age"); // 运行时ClassCastException!  

结论:原生Map允许任意类型键值,导致类型混乱和潜在错误。


3-5分钟:泛型Map的声明与操作

定义并操作类型安全的泛型Map:

Map<String, Integer> studentScores = new HashMap<>();  
studentScores.put("Alice", 90);  
// studentScores.put(100, "Bob");  // 编译报错!键值类型不匹配  
int score = studentScores.get("Alice");  // 直接获取Integer,无需强制转换  

核心规则

  • 键类型K和值类型V需在声明时明确
  • 类型不匹配的操作会被编译器拦截

5-7分钟:泛型Map的遍历与类型安全

安全遍历键值对:

for (Map.Entry<String, Integer> entry : studentScores.entrySet()) {
     
    String name = entry.getKey();     // 直接获取String类型  
    int score = entry.getValue();     // 直接获取Integer类型  
    System

http://www.kler.cn/a/573863.html

相关文章:

  • leetcode日记(74)扰乱字符串
  • 科技解密丨赫思嘉·惟愿:深耕医美领域,以创新科技引领行业新篇章
  • DSP笔记
  • 【Aioredis实战总结】如何修改aioredis的最大连接数。
  • 13、TCP和UDP的区别【高频】
  • Linux部署Redis集群
  • 如何用deepseek写游戏(思路教程分享)【附图文】
  • Flink:大数据处理的“双面侠”
  • 【报错:HikariPool-1 - Exception during pool initialization.】
  • Gpt翻译完整版
  • Linux kill 命令
  • Elasticsearch:解锁深度匹配,运用Elasticsearch DSL构建闪电般的高效模糊搜索体验
  • java基础(算法用)
  • 【JavaEE】-- 多线程(初阶)3
  • Python-07PDF转Word
  • 20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式
  • Lua如何实现面向对象的三大特性?
  • React事件动态挂在到组件上
  • Vue 组件通信 - 父传子
  • 阿里 DataWorks:数据治理、安全中心、数据质量核心功能梳理