Bas*_*que 1 java list unmodifiable java-stream collectors
在处理 Java 流时,我们可以使用收集器来生成诸如流之类的集合。
例如,这里我们制作了一个Month枚举对象的流,并为每个对象生成一个String保存月份的本地化名称的流。我们通过调用 将结果收集到 a Listof 类型中。StringCollectors.toList()
List < String > monthNames =
Arrays
.stream( Month.values() )
.map( month -> month.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) )
.collect( Collectors.toList() )
;
Run Code Online (Sandbox Code Playgroud)
monthNames.toString(): [janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre]
为了使该列表不可修改,我们可以List.copyOf在 Java 10 及更高版本中调用。
List < String > monthNamesUnmod = List.copyOf( monthNames );
Run Code Online (Sandbox Code Playgroud)
? 有没有办法让带有收集器的流生成不可修改的列表,而我不需要包装对 的调用List.copyOf?
Collectors.toUnmodifiableList是的,有一种方法: Collectors.toUnmodifiableList
就像List.copyOf,此功能内置于Java 10及更高版本中。相比之下,Collectors.toList出现Collectors在Java 8 中的。
在您的示例代码中,只需将最后一部分更改toList为toUnmodifiableList.
List < String > monthNames =
Arrays
.stream( Month.values() )
.map( month -> month.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) )
.collect( Collectors.toUnModifiableList() ) // Call `toUnModifiableList`.
;
Run Code Online (Sandbox Code Playgroud)
Set和Map太该Collectors实用程序类提供选项,收集到一个不可修改Set或Map以及List。
Collectors.toUnmodifiableList()Collectors.toUnmodifiableSet()Collectors.toUnmodifiableMap()(或与BinaryOperator)| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |