java - List.of 和 List.copyOf 方法
问题描述
我知道 List.of 和 List.copyOf 创建原始列表的不可变克隆列表,所以在我的理解中,下面的代码应该在实际打印 [[1, 2]] 时打印 [1], [1, 2], [1, 2]?List.of 如何获取初始集合 col 的最新视图?
Collection<Number> col = new HashSet<>();
col.add(1);
var list1 = List.of(col); //1
col.add(2); //2
var list2 = List.copyOf(col); //3
System.out.println(list1+", "+list2);
解决方案
List.of
创建一个以参数s作为元素的新列表。创建一个与单个参数List.copyOf
具有相同元素的新列表。 Collection
伪代码示例(注意方括号):
List.of(1,2,3) == [1,2,3]
List.copyOf([1,2,3]) == [1,2,3]
List.of([1,2,3]) == [[1,2,3]]
List.of([1,2,3], [4,5,6]) == [[1,2,3], [4,5,6]]
第三行类似于您的代码中发生的事情。of
创建一个将参数作为元素的列表。你给它什么参数?一组可修改的。因此,它创建了一个包含单个元素的不可修改列表,该元素是您的可修改集。另请注意,of
不复制集合。
copyOf
使用与您传入的集合相同的元素创建一个不可修改的列表。您传入的col
具有元素1
, 2
,因此它List
使用元素创建一个不可修改的1
, 2
。
推荐阅读
- mysql - 使用 SQL 将 json 数据列表字段转换为列
- javascript - 从 javascript 代码获取数据到 blazor 中的剃刀页面代码
- spring - 优化回答休息 springboot/jhipster
- c# - 获取分配给他们的用户股票 + 那些尚未分配的股票
- cdn - 通过 CDN 流式传输实时专有内容
- google-cloud-platform - 如何将 YouTube 中的视频导入谷歌云平台?
- c# - 如果禁用,Core MVC CheckBox 返回 false
- ios - 设置 preferredContentSize 值似乎为时已晚
- azure - Azure DevOps - 发布管道任务引发 Http 超时异常
- angular - 在 RxJs 中动态选择是否返回一个 Observable 或另一个