[使用Java流时,我们可以使用收集器来生成诸如流的集合。
例如,在此我们制作了Month
枚举对象的流,并为每个对象生成一个String
,其中包含月份的本地化名称。我们将结果收集到类型为List
的String
中。
List < String > monthNames =
Arrays
.stream( Month.values() )
.map( month -> month.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) )
.collect( Collectors.toList() )
;
monthNames.toString():[janvier,février,火星,avril,mai,juin,juillet,août,septembre,十月,十一月,décembre]]
为了得到list unmodifiable,我们可以在Java 10及更高版本中调用List.copyOf
。
List < String > monthNamesUnmod = List.copyOf( monthNames );
➥有没有一种方法,使带有收集器的流无需生成对List.copyOf
的调用就可以生成不可修改的列表?
Collectors.toUnmodifiableList
是,有一种方法:Collectors.toUnmodifiableList
类似于Collectors.toUnmodifiableList
,此功能内置于List.copyOf
及更高版本中。相反,List.copyOf
随Java 10的首演出现。
在您的示例代码中,只需将最后一部分Collectors.toList
更改为Collectors
。
Collectors
toList
也是>toList
实用程序类提供了用于收集到不可修改的toUnmodifiableList
或List < String > monthNames =
Arrays
.stream( Month.values() )
.map( month -> month.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) )
.collect( Collectors.toUnModifiableList() ) // 🡄 Call `toUnModifiableList`.
;
以及Set
中的选项。
Map
Set
(或Map
)