Java 不可变Map练习 (2024.7.28)

ops/2024/9/25 23:18:55/

        CollectionExercise3

java">package CollectionExercise20240728;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class CollectionExercise3 {public static void main(String[] args) {// 不可变的Map集合// Map中键是不可以重复的// Map中的of方法参数是有上限的,最多20个参数(也就是10个键值对)// 键值对个数≤10Student s1 = new Student("张三", 18);Student s2 = new Student("李四", 21);Student s3 = new Student("王五", 19);Student s4 = new Student("赵六", 23);Student s5 = new Student("钱七", 17);Student s6 = new Student("周八", 30);Map<Student, String> studentMap = Map.of(s1, "重庆", s2, "四川", s3, "武汉",s4, "北京", s5, "上海", s6, "深圳");studentMap.forEach((key, value) -> System.out.println(key.getName() + " " + key.getAge() + " = " + value));// 不可变的Map无法更改studentMap.put(new Student("小明", 20), "USA"); // 无法更改// 键值对个数>10:此时of中的参数已经不够了,需要用Map中的ofEntries方法// 创建11个键值对对象HashMap<String, String> hm = new HashMap<>();hm.put("张三", "南京");hm.put("李四", "北京");hm.put("王五", "上海");hm.put("赵六", "北京");hm.put("孙七", "深圳");hm.put("周八", "杭州");hm.put("吴九", "宁波");hm.put("郑十", "苏州");hm.put("刘一", "无锡");hm.put("陈二", "嘉兴");hm.put("aaa", "111");// 先将HashMap中的元素转换为entries集合Set<Map.Entry<String, String>> entrySet = hm.entrySet();// 创建entries数组Map.Entry<String, String>[] arr = new Map.Entry[0];// 将entries集合转换为数组,用新的数组接受Map.Entry<String, String>[] arr1 = entrySet.toArray(arr);// 将entries的数组传递给ofEntries方法Map<String, String> map = Map.ofEntries(arr1);// 不可变的Map创造成功,无法改变map.put("bbb","222");// 可以调用Map中的copyOf方法得到一个不可变的Map对象,其底层原理和上面的代码一样Map<String, String> map2 = Map.copyOf(hm);map.put("bbb","222");}
}class Student{String name;int age;public Student() {this("TestStudent", 20);}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}


http://www.ppmy.cn/ops/85989.html

相关文章

GPT-4o Mini 模型的性能与成本优势全解析

GPT-4o Mini 模型的性能与成本优势全解析 &#x1f4c8; &#x1f31f; GPT-4o Mini 模型的性能与成本优势全解析 &#x1f4c8;摘要引言正文内容GPT-4o Mini 模型简介 &#x1f680;性能测试与对比 &#x1f4ca;应用场景 &#x1f310;自然语言处理对话系统内容生成 ✍️ &am…

【React】全面解析:从基础知识到高级应用,掌握现代Web开发利器

文章目录 一、React 的基础知识1. 什么是 React&#xff1f;2. React 的基本概念3. 基本示例 二、React 的进阶概念1. 状态&#xff08;State&#xff09;和属性&#xff08;Props&#xff09;2. 生命周期方法&#xff08;Lifecycle Methods&#xff09;3. 钩子&#xff08;Hoo…

【SQL 新手教程 4/20】关系模型 --索引

&#x1f497; 关系数据库建立在关系模型上⭐ 关系模型本质上就是若干个存储数据的二维表 记录 (Record)&#xff1a; 表的每一行称为记录&#xff08;Record&#xff09;&#xff0c;记录是一个逻辑意义上的数据 字段 (Column)&#xff1a;表的每一列称为字段&#xff08;Colu…

spring IOC DI -- IOC详解

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 文章目录 4.2 Ioc 详解4.2.1 Bean的存储Controller(控制器存储)Service (服务存储)Repository(仓库存储)Component(组件存储)Configuration(配置存储) 4.2.2 为什么需要这么多类注解?4.2.3方法…

Mac安装Hoomebrew与升级Python版本

参考 mac 安装HomeBrew(100%成功)_mac安装homebrew-CSDN博客 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 安装了Python 3.x版本&#xff0c;你可以使用以下命令来设置默认的Python版本&#xff1a; # 首先找到新安…

【音视频之SDL2】Windows配置SDL2项目模板

文章目录 前言 SDL2 简介核心功能 Windows配置SDL2项目模板下载SDL2编译好的文件VS配置SDL2 测试代码效果展示 总结 前言 在开发跨平台的音视频应用程序时&#xff0c;SDL2&#xff08;Simple DirectMedia Layer 2&#xff09;是一个备受欢迎的选择。SDL2 是一个开源库&#x…

[k8s源码]9.workqueue

client-go 是一个库&#xff0c;提供了与 Kubernetes API 服务器交互的基础设施。它提供了诸如 Informer、Lister、ClientSet 等工具&#xff0c;用于监听、缓存和操作 Kubernetes 资源。而自定义控制器则利用这些工具来实现特定的业务逻辑和自动化任务。业务逻辑实现&#xff…

模式Hash和history

vuerouter有两种路由模式Hash和history。区别&#xff1a;Hash为默认模式&#xff0c;url中包含一个#符号的哈希部分。优势&#xff1a;兼容性好&#xff0c;不需要后端服务器的特殊配置。缺点&#xff1a;不够美观&#xff0c;搜索引擎优化较差。History模式使用的浏览器的His…