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

Java进阶之旅第五天

Java进阶之旅第五天

不可变集合

应用场景

  • 1.如果某个数据不能被修改,把它拷贝到不可变集合中是个很好的实践
  • 2.当集合对象被不可信的库调用时,不可变形式是安全的
  • 3.不可变集合不能修改,只能进行查询

获取方式

  • 在List,Set,Map接口中,都存在静态的of方法,可以获取一个不可变的集合
  • 方法: List.of(),Set.of(),Map.of()
  • 举例代码: List<String> list = List.of("1","2");

细节

  • 1.当我们要获取一个不可变的Set集合时,里面的参数一定要保证唯一性.(集合的元素具有唯一性)
  • 2.Map集合中键也不能重复
  • 3.Map.of()方法最多只能传递10对键值对,它的底层没有可变参数的方法(原因: 一个方法中不能存在多个可变参数)
  • 4.当我们想要传递多个键值对进入不可变Map集合中时,我们可以使用Map.ofEntries(Entry<? extends K, ? extends V>... entries),它的底层就是将一个键值对看成整体,然后改成可变参数
  • 5.由于Map.ofEntries()方法使用不方便,所以一般常用Map.copyOf()方法的参数是一个Map集合,返回值就是不可变集合

代码演示

        //不可变集合System.out.println("---list.of---");List<String> list = List.of("1","2","3");for (String s : list) {System.out.println(s);}System.out.println("---set.of---");Set<String> set = Set.of("1","2","3");for (String s : set) {System.out.println(s);}System.out.println("---Map.of(键值对有限)---");Map<String, String> map = Map.of("小明","13","小红","15");Set<Map.Entry<String, String>> entries = map.entrySet();for (Map.Entry<String, String> entry : entries) {System.out.println(entry.getKey()+" = "+entry.getValue());}System.out.println("---Map.of(键值对个数会变化)---");HashMap<String, String> hm = new HashMap<>();hm.put("小明","13");hm.put("小红","15");hm.put("小黑","15");//最简单的方法Map.copyOf()System.out.println("---简单---");Map<String, String> map1 = Map.copyOf(hm);Set<Map.Entry<String, String>> entries1 = map1.entrySet();for (Map.Entry<String, String> entry : entries1) {System.out.println(entry.getKey()+" = "+entry.getValue());}//复杂一点的(copyOf()封装的内容(不理解可以尝试看看别的文章System.out.println("---复杂---");Map<String, String> entries2 = Map.ofEntries(hm.entrySet().toArray(new Map.Entry[0]));Set<Map.Entry<String, String>> entries3 = entries2.entrySet();for (Map.Entry<String, String> entry : entries3) {System.out.println(entry.getKey()+" = "+entry.getValue());}

结果

---list.of---
1
2
3
---set.of---
1
2
3
---Map.of(键值对有限)---
小明 = 13
小红 = 15
---Map.of(键值对个数会变化)---
---简单---
小红 = 15
小黑 = 15
小明 = 13
---复杂---
小红 = 15
小黑 = 15
小明 = 13
http://www.lryc.cn/news/284649.html

相关文章:

  • 拓展边界:前端世界的跨域挑战
  • 旅游项目day03
  • 单片机学习记录(一)
  • MacBookPro怎么数据恢复? mac电脑数据恢复?
  • Python多线程—threading模块
  • mysql limit
  • 解决国内Linux服务器无法使用Github的方法
  • 动态规划基础(二)最长公共子序列 LCS
  • React配置src根目录@
  • SQL Povit函数使用及实例
  • Lite AD的安装
  • 限流算法之流量控制的平滑之道:滑动时间窗算法
  • C语言数据结构——顺序表
  • 网络安全:守护数字世界的盾牌
  • vue3hooks的使用
  • elementUI+el-upload 上传、下载、删除文件以及文件展示列表自定义为表格展示
  • 供应链安全项目in-toto开源框架详解
  • 自己是如何使用单元测试
  • 第二百七十八回
  • Java 内存模型深度解析
  • python爬取图片(thumbURL和html文件标签分别爬取)
  • MySQL、Oracle 常用SQL:建表、建视图、数据增删改查、常用condition
  • Docker(八)高级网络配置
  • VUE--- ref refs
  • 微信小程序之WXML 模板语法之数据绑定、事件绑定、wx:if和列表渲染
  • maven导入无法拉取所需依赖
  • 【2023-08-20】字节跳动秋招笔试四道编程题解
  • VPS网站发布-个人网站搭建与部署-个人简历网站示例-个人简历网站案例-网站推广
  • INTEWORK—PET 汽车软件持续集成平台
  • 【Git】 取消上一次commit或push