Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java streams收集器返回的列表是否可以不修改?_Java_List_Java Stream_Collectors_Unmodifiable - Fatal编程技术网

Java streams收集器返回的列表是否可以不修改?

Java streams收集器返回的列表是否可以不修改?,java,list,java-stream,collectors,unmodifiable,Java,List,Java Stream,Collectors,Unmodifiable,在使用Java流时,我们可以使用收集器生成一个集合,例如流 例如,这里我们创建了一个月枚举对象流,并为每个对象生成一个包含该月本地化名称的字符串。我们通过调用将结果收集到字符串类型的列表中 ➥ 是否有一种方法可以让具有收集器的流生成一个不可修改的列表,而无需我包装对list.copyOf的调用?Collectors.toUnmodifiableList 是的,有一种方法: 例如,此功能内置于和更高版本中。相比之下,Collectors.toList在年首次亮相 在示例代码中,只需将最后一部分更改

在使用Java流时,我们可以使用收集器生成一个集合,例如流

例如,这里我们创建了一个月枚举对象流,并为每个对象生成一个包含该月本地化名称的字符串。我们通过调用将结果收集到字符串类型的列表中

➥ 是否有一种方法可以让具有收集器的流生成一个不可修改的列表,而无需我包装对list.copyOf的调用?

Collectors.toUnmodifiableList 是的,有一种方法:

例如,此功能内置于和更高版本中。相比之下,Collectors.toList在年首次亮相

在示例代码中,只需将最后一部分更改为toUnmodifiableList

列表monthNames= 阵列 .stream.Month.values .map month->month.getDisplayName TextStyle.FULL,Locale.CANADA\u FRENCH .collect Collectors.toUnModifiableList//Collectors.toUnModifiableList 是的,有一种方法:

例如,此功能内置于和更高版本中。相比之下,Collectors.toList在年首次亮相

在示例代码中,只需将最后一部分更改为toUnmodifiableList

列表monthNames= 阵列 .stream.Month.values .map month->month.getDisplayName TextStyle.FULL,Locale.CANADA\u FRENCH .collect Collectors.toUnModifiableList/在Java 8中我们可以使用

在Java8中,我们可以使用


仅供参考,调用将在原始列表上创建一个视图,而不是制作单独的副本。但在这里给出的场景中,我认为这与单独的副本具有相同的效果,因为此代码吞并了原始列表。仅供参考,调用将在原始列表上创建视图,而不是创建单独的副本。但在这里给出的场景中,我认为这与单独的副本具有相同的效果,因为这段代码吞并了原始列表。这是否回答了您的问题?这回答了你的问题吗?
List < String > monthNames = 
        Arrays
        .stream( Month.values() )
        .map( month -> month.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) )
        .collect( Collectors.toList() )
;
List < String > monthNamesUnmod = List.copyOf( monthNames );
List < String > monthNames = 
        Arrays
        .stream( Month.values() )
        .map( month -> month.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) )
        .collect( Collectors.toUnModifiableList() )  // In Java 8 we could use 
Collectors.collectingAndThen
.

List < String > monthNames =
    Arrays
        .stream( Month.values() )
        .map( month -> month.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) )
        .collect( 
            Collectors.collectingAndThen(Collectors.toList(), 
            Collections::unmodifiableList) 
        )
;