javalist拼接_java8中如何将多个集合的数据拼接成⼀个统⼀的
java8中stream的提供了⼀个拼接流的⽅法at,可以将两个stream拼接成⼀个stream, 保持了两个stream中的元素顺序。那么如果我们需要对多个集合中的元素拼接成⼀个stream来统⼀处理,可以怎么做呢?
⽐如有三个Collection c1, c2, c3.
⽅法⼀,使⽤at⽅法来拼接,可以使⽤⼀个for循环来处理。
private static Stream concat1(List> collections) {
java streamStream result = pty();
for (Collection strings : collections) {
result = at(result,  strings.stream());
}
return  result;
}
⽅法⼆,使⽤flatMap⽅法,将集合变成stream, 再压平
private static Stream concat2(List> collections) {
return  collections.stream()
.flatMap(Collection::stream);
}
对于不同集合类型的数据,如何做成⼀个统⼀的流?还是可以使⽤flatMap⽅法来做
⽅法三:
private static Stream concat3(List s1,String[] s2, Set s3) {
return  Stream.of(s1.stream(), Arrays.stream(s2), s3.stream())
.
flatMap(Function.identity());
}
⽅法三和⽅法⼆相⽐,可以使⽤不同类型的集合类型来拼接流,⽅法⼆在拥有共同基类的情况下使⽤会显得简洁很多。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。