1.15 Java 9新增的不可变集合
Java 9新增的不可变集合
Java 9 版本以前,假如要创建一个包含 6 个元素的 Set 集合,程序需要先创建 Set 集合,然后调用 6 次 add() 方法向 Set 集合中添加元素。Java 9 对此进行了简化,程序直接调用 Set、List、Map 的 of()
方法即可创建包含 N 个元素的不可变集合,这样一行代码就可创建包含 N 个元素的集合。
不可变意味着程序不能向集合中添加元素,也不能从集合中删除元素。
如下程序示范了如何创建不可变集合。
public class Java9Collection {public static void main(String[] args) {// 创建包含4个元素的Set集合Set set = Set.of("Java", "Kotlin", "Go", "Swift");System.out.println(set);// 不可变集合,下面代码导致运行时错误// set.add("Ruby");// 创建包含4个元素的List集合List list = List.of(34, -25, 67, 231);System.out.println(list);// 不可变集合,下面代码导致运行时错误// list.remove(1);// 创建包含3个key-value对的Map集合Map map = Map.of("语文", 89, "数学", 82, "英语", 92);System.out.println(map);// 不可变集合,下面代码导致运行时错误// map.remove("语文");// 使用Map.entry()方法显式构建key-value对Map map2 = Map.ofEntries(Map.entry("语文", 89), Map.entry("数学", 82), Map.entry("英语", 92));System.out.println(map2);}
}
上面第 4、9、14 和 19 行代码示范了如何使用集合元素创建不可变集合,其中 Set、List 比较简单,程序只要为它们的 of() 方法传入 N 个集合元素即可创建 Set、List 集合。
从上面代码可以看出,创建不可变的 Map 集合有两个方法。使用 of() 方法时只要依次传入多个 key-value 对即可;还可使用 ofEntries() 方法,该方法可接受多个 Entry 对象,因此程序显式使用 Map.entry() 方法来创建 Map.Entry 对象。
1.15 Java 9新增的不可变集合相关推荐
- 【Java基础16】不可变集合、Stream流和异常
目录 1. 不可变集合 1.1 创建 2. Stream流 2.1 Stream流的创建 2.1.1 获得Stream流 2.1.2 中间操作 2.1.3 终结方法 2.1.4 Stream流数据收集 ...
- 创建list集合_Java 9新增的不可变集合
Java 9 版本以前,假如要创建一个包含 6 个元素的 Set 集合,程序需要先创建 Set 集合,然后调用 6 次 add() 方法向 Set 集合中添加元素.Java 9 对此进行了简化,程序直 ...
- Prettier 1.15代码格式化工具新增Angular和Vue.js支持
Prettier 1.15代码格式化工具新增HTML.Vue.js.Angular.MDX支持以及多项语法优化和改进. 对于Angular和Vue,Prettier现在可以格式化这些扩展HTML的框架 ...
- java new collection_使用Java 8新增的Predicate操作Collection集合
Java 8 起为 Collection 集合新增了一个 removeIf(Predicate filter) 方法,该方法将会批量删除符合 filter 条件的所有元素.该方法需要一个 Predic ...
- Java笔记_16(不可变集合、Stream流、方法引用)
Java笔记_16 一.创建不可变集合 1.1.创建不可变集合的应用场景 1.2.创建不可变集合的书写格式 二.Stream流 2.1.体验Stream流 2.2.Stream流的思想和获取Strea ...
- 【Java】7.5 正则表达式 7.6 Java 8 新增的日期、时间格式器
目录 Pattern类 Matcher类 Java 8 新增的日期.时间格式器 Pattern类 Pattern类的实例是将一个编译好的正则表达式封装起来.因此正则表达式字符串必须先被变异成Patte ...
- JDK 15 JAVA 15的新特性展望
文章目录 JEP 371: Hidden Classes JEP 372: 删除 Nashorn JavaScript Engine JEP 377: 新的垃圾回收器ZGC正式上线了 JEP 378: ...
- 睡觉时:新增的Java 8新增功能
自Java 8推出以来,最有趣的功能是什么? Java 8最近庆祝了它的第一个生日,而主要版本刚刚一年多前发布. 这当然值得庆祝. 自从最初的Java 8版本问世以来,已经发布了六个更新. 这些更新中 ...
- Java SE 9:不可变Map和Map.Entry的工厂方法
发表简要目录: (Post Brief Table of Content:) Introduction介绍 Java SE 8: Immutable Empty MapJava SE 8:不可变的空映 ...
最新文章
- 创业计划书模板(周鸿祎口述)
- 普通(实例)方法和实例方法的定义和调用
- HTML 30分钟入门教程
- HyperLink 鼠标经过时候显示全部文字
- LINUX 数据盘的格式化与挂载
- SimpleDateFormat类的线程安全问题和解决方案
- 云计算教程学习入门视频:云计算的模型都有哪些
- 2020山东省计算机专科学校排名,2021山东专科学校排名 最好的高职院校排行榜
- sersync实时备份安装及设置
- python写代码酷炫插件_使用 Python 制作酷炫多彩的 Jenkins 插件词云图
- 请求头User-Agent作用?
- 哲学与科学的批判性思维工具
- UE4材质(六):不透明度Opacity——玻璃
- windows10强制删除文件_Windows10中恶意软件删除
- 【历史上的今天】12 月 12 日:英特尔创始人出生;PSP 发布;双十二购物狂欢节
- 万花筒写轮眼画法_万花筒写轮眼怎么画?
- [转贴]馒头的N种吃法
- 2021年挖掘猫眼专业版电影票房数据
- 印象笔记,为知笔记和 Effie 哪个适合学生呢?
- 计算机网络读书笔记(二)
热门文章
- 成功解决UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd3 in position 238: invalid continuation b
- ubuntu 安装 CUDA、 cuDNN 的tips
- selenium V1.0和V2.0差别对比
- Beginning C# Objects 读书笔记(一)
- 强碱性食品 高嘌呤食物
- Delphi下的GDI+编程[2] DrawLine - 绘制直线
- OutputCache各参数的说明【转】
- 时间序列预测之一:指数平滑法(二)R语言——代码实现
- Hyperledger Fabric 智能合约实战 (3) 安装fabric
- C++ Primer 5th笔记(chap 13 拷贝控制)交换操作