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

Java中 创建不可变集合

常规写法
以往我们创建一些不可变集合的时候,通常是这样写的:

// 不可变的Set
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
set = Collections.unmodifiableSet(set);

// 不可变的List
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list = Collections.unmodifiableList(list);
Java8的写法
在Java 8的时候,利用Stream API还能简化一下,可以演变成这样:

Set<String> set = Collections.unmodifiableSet(Stream.of("a", "b", "c").collect(toSet()));
List<Integer> list = Collections.unmodifiableList(Stream.of(1, 2, 3).collect(toList()));
Java9的写法
而现在到了Java 9,这一操作变的更为简单,只需要这样:

Set<String> set = Set.of("a", "b", "c");
List<Integer> list = List.of(1, 2, 3);

同时,对于一下更复杂的集合也一样支持,比如Map类型也可以这样写:

Map<String, String> map = Map.of("a", "1", "b", "2", "c", "3");
就是要注意下,Map.of的参数是key和value成对出现的,所以参数数量一定是偶数:

Map.of()
Map.of(k1, v1)
Map.of(k1, v1, k2, v2)
Map.of(k1, v1, k2, v2, k3, v3)
...
与asList的区别
看到这里,可能有的人会问了,之前不是对于集合有asXxx这样的方便方法了么?他们有啥区别吗?

这里就以 List.of 和 Arrays.asList 为例,给大家列一下它们的异同:

Java 9中推出 List.of 创建的是不可变集合,而 Arrays.asList 是可变集合

List.of 和 Arrays.asList 都不允许add和remove元素,但 Arrays.asList 可以调用set更改值,而 List.of 不可以,会报 java.lang.UnsupportedOperationException 异常

List.of 中不允许有null值, Arrays.asList 中可以有null值
 

http://www.lryc.cn/news/189684.html

相关文章:

  • options.css 内容优化2 --chatPGT
  • MS4344:24bit、192kHz 双通道数模转换电路
  • Talk | ACL‘23 杰出论文,MultiIntruct:通过多模态指令集微调提升VLM的零样本学习
  • PLC编程速成(二)
  • 【萌新向】Sql Server保姆级安装教程-图文详解手把手教你安sql
  • LLVM(5)ORC实例分析
  • jvm内存使用测试
  • Web1.0——Web2.0时代——Web3.0
  • 【深蓝学院】手写VIO第7章--VINS初始化和VIO系统--笔记
  • 大开眼界:Netbios 上古时代如何用一个参数实现一个世界 负面典型
  • el-table制作表格,改变表格的滚动条样式
  • Cmd报错:No module named ‘pip’
  • python输出奇数:如何使用Python输出奇数?
  • 2023 NewStarCTF --- wp
  • 一键切换IP地址:电脑IP更改的简便方法
  • 计算机相关内容的网站主题说明书
  • zabbix监控项
  • Java基础面试-重载和重写的区别
  • 记一次生产大对象及GC时长优化经验
  • Vue项目为页面添加水印效果
  • 两数之和
  • 试过GPT-4V后,微软写了个166页的测评报告,业内人士:高级用户必读
  • 使用Python构造VARIMA模型
  • Java基于SpringBoot+Vue的考研资讯平台
  • 信钰证券:9月以来A股20家银行 获机构不同批次调研
  • 应用商店优化的好处有哪些?
  • MacOS Pro笔记本硬盘升级纪实
  • 景联文科技:3D点云标注应用场景和专业平台
  • 基于R语言的水文、水环境模型优化技术及快速率定方法
  • 学习网络安全得多少费用?网络安全入门了解