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());