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新增的不可变集合相关推荐

  1. 【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流数据收集 ...

  2. 创建list集合_Java 9新增的不可变集合

    Java 9 版本以前,假如要创建一个包含 6 个元素的 Set 集合,程序需要先创建 Set 集合,然后调用 6 次 add() 方法向 Set 集合中添加元素.Java 9 对此进行了简化,程序直 ...

  3. Prettier 1.15代码格式化工具新增Angular和Vue.js支持

    Prettier 1.15代码格式化工具新增HTML.Vue.js.Angular.MDX支持以及多项语法优化和改进. 对于Angular和Vue,Prettier现在可以格式化这些扩展HTML的框架 ...

  4. java new collection_使用Java 8新增的Predicate操作Collection集合

    Java 8 起为 Collection 集合新增了一个 removeIf(Predicate filter) 方法,该方法将会批量删除符合 filter 条件的所有元素.该方法需要一个 Predic ...

  5. Java笔记_16(不可变集合、Stream流、方法引用)

    Java笔记_16 一.创建不可变集合 1.1.创建不可变集合的应用场景 1.2.创建不可变集合的书写格式 二.Stream流 2.1.体验Stream流 2.2.Stream流的思想和获取Strea ...

  6. 【Java】7.5 正则表达式 7.6 Java 8 新增的日期、时间格式器

    目录 Pattern类 Matcher类 Java 8 新增的日期.时间格式器 Pattern类 Pattern类的实例是将一个编译好的正则表达式封装起来.因此正则表达式字符串必须先被变异成Patte ...

  7. JDK 15 JAVA 15的新特性展望

    文章目录 JEP 371: Hidden Classes JEP 372: 删除 Nashorn JavaScript Engine JEP 377: 新的垃圾回收器ZGC正式上线了 JEP 378: ...

  8. 睡觉时:新增的Java 8新增功能

    自Java 8推出以来,最有趣的功能是什么? Java 8最近庆祝了它的第一个生日,而主要版本刚刚一年多前发布. 这当然值得庆祝. 自从最初的Java 8版本问世以来,已经发布了六个更新. 这些更新中 ...

  9. Java SE 9:不可变Map和Map.Entry的工厂方法

    发表简要目录: (Post Brief Table of Content:) Introduction介绍 Java SE 8: Immutable Empty MapJava SE 8:不可变的空映 ...

最新文章

  1. 创业计划书模板(周鸿祎口述)
  2. 普通(实例)方法和实例方法的定义和调用
  3. HTML 30分钟入门教程
  4. HyperLink 鼠标经过时候显示全部文字
  5. LINUX 数据盘的格式化与挂载
  6. SimpleDateFormat类的线程安全问题和解决方案
  7. 云计算教程学习入门视频:云计算的模型都有哪些
  8. 2020山东省计算机专科学校排名,2021山东专科学校排名 最好的高职院校排行榜
  9. sersync实时备份安装及设置
  10. python写代码酷炫插件_使用 Python 制作酷炫多彩的 Jenkins 插件词云图
  11. 请求头User-Agent作用?
  12. 哲学与科学的批判性思维工具
  13. UE4材质(六):不透明度Opacity——玻璃
  14. windows10强制删除文件_Windows10中恶意软件删除
  15. 【历史上的今天】12 月 12 日:英特尔创始人出生;PSP 发布;双十二购物狂欢节
  16. 万花筒写轮眼画法_万花筒写轮眼怎么画?
  17. [转贴]馒头的N种吃法
  18. 2021年挖掘猫眼专业版电影票房数据
  19. 印象笔记,为知笔记和 Effie 哪个适合学生呢?
  20. 计算机网络读书笔记(二)

热门文章

  1. 成功解决UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd3 in position 238: invalid continuation b
  2. ubuntu 安装 CUDA、 cuDNN 的tips
  3. selenium V1.0和V2.0差别对比
  4. Beginning C# Objects 读书笔记(一)
  5. 强碱性食品 高嘌呤食物
  6. Delphi下的GDI+编程[2] DrawLine - 绘制直线
  7. OutputCache各参数的说明【转】
  8. 时间序列预测之一:指数平滑法(二)R语言——代码实现
  9. Hyperledger Fabric 智能合约实战 (3) 安装fabric
  10. C++ Primer 5th笔记(chap 13 拷贝控制)交换操作