Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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流将数组收集到一个列表中_Java_Java 8_Java Stream - Fatal编程技术网

Java流将数组收集到一个列表中

Java流将数组收集到一个列表中,java,java-8,java-stream,Java,Java 8,Java Stream,我正在尝试使用新的流功能将字符串列表扩展为更长的列表 segments = segments.stream() //segments is a List<String> .map(x -> x.split("-")) .collect(Collectors.toList()); segments=segments.stream()//segments是一个列表 .map(x->x.split(“-”) .collect(Collectors.toList())

我正在尝试使用新的流功能将字符串列表扩展为更长的列表

segments = segments.stream() //segments is a List<String>
    .map(x -> x.split("-"))
    .collect(Collectors.toList());
segments=segments.stream()//segments是一个列表
.map(x->x.split(“-”)
.collect(Collectors.toList());

然而,这会产生一个
List()
,当然不会编译。如何将最终流缩减为一个列表?

您需要使用
flatMap

segments = segments.stream() //segments is a List<String>
    .map(x -> x.split("-"))
    .flatMap(Stream::of)
    .collect(Collectors.toList());
segments=segments.stream()//segments是一个列表
.map(x->x.split(“-”)
.flatMap(流::of)
.collect(Collectors.toList());
请注意,
Stream.of(T…values)
只调用
Arrays.Stream(T[]array)
,因此此代码相当于@TagirValeev的第一个解决方案。

使用:

segments = segments.stream() //segments is a List<String>
    .map(x -> x.split("-"))
    .flatMap(Arrays::stream)
    .collect(Collectors.toList());
segments = segments.stream() //segments is a List<String>
    .flatMap(Pattern.compile("-")::splitAsStream)
    .collect(Collectors.toList());