美文网首页
java8中如何将多个集合的数据拼接成一个统一的流

java8中如何将多个集合的数据拼接成一个统一的流

作者: blowyourheart | 来源:发表于2016-09-26 14:08 被阅读0次

java8中stream的提供了一个拼接流的方法Stream.concat,可以将两个stream拼接成一个stream, 保持了两个stream中的元素顺序。

那么如果我们需要对多个集合中的元素拼接成一个stream来统一处理,可以怎么做呢?

比如有三个Collection<String> c1, c2, c3.


方法一,使用Stream.concat方法来拼接,可以使用一个for循环来处理。

private static Stream<String> concat1(List<Collection<String>> collections) {

Stream result = Stream.empty();

for (Collection<String> strings : collections) {

              result = Stream.concat(result,  strings.stream());

}

return   result;

}


方法二,使用flatMap方法,将集合变成stream, 再压平

private static Stream<String> concat2(List<Collection<String>> collections) {

return  collections.stream()

           .flatMap(Collection::stream);

}


对于不同集合类型的数据,如何做成一个统一的流?还是可以使用flatMap方法来做

方法三:

private static Stream<String> concat3(List<String> s1,String[] s2, Set<String> s3) {

return  Stream.of(s1.stream(), Arrays.stream(s2), s3.stream())

           .flatMap(Function.identity());

}

方法三和方法二相比,可以使用不同类型的集合类型来拼接流,方法二在拥有共同基类的情况下使用会显得简洁很多。

相关文章

  • java8中如何将多个集合的数据拼接成一个统一的流

    java8中stream的提供了一个拼接流的方法Stream.concat,可以将两个stream拼接成一个str...

  • 2021-09-20 IO流(Properties存取配置文件)

    演示如何将流中的数据存储到集合中,想要将info.txt中的数据存到集合中进行操作1.用一个流和info.txt文...

  • JAVA基础-JAVA8 对集合的增强

    Java8流、流操作集合 Predicate 谓词对象 Java8起为Collection集合新增了一个remov...

  • 并行流和串行流

    并行流 并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。 Java8中将并行进行了优化,...

  • Stream

    并行流 并行流就是把一个内容分成多个数据库,并用不同的线程分别处理每个数据块的流 Java8中将并行流进行了优化,...

  • (转)学习Java8数据流List转为Map、分组、统计等操作集

    转:Java8数据流 分享:Java8集合排序 Java8java8--List转为Map、分组、统计等操作

  • java8-流

    2、java8: 流 reactor 流是JavaAPI的新成员,它允许你以声明性方式处理数据集合(通过查询语句来...

  • Java IO流Properties存取

    你虚度的今天,正是昨天逝去的人无限向往的明天。 Properties存取 如何将流中的数据存储到集合中。 想要将i...

  • Java8新特性——StreamAPI(一)

    1. 流的基本概念 1.1 什么是流? 流是Java8引入的全新概念,它用来处理集合中的数据,暂且可以把它理解为一...

  • StreamAPI

    1.流的基本概念 1.1 什么是流? 流是Java8引入的全新概念,它用来处理集合中的数据,暂且可以把它理解为一种...

网友评论

      本文标题:java8中如何将多个集合的数据拼接成一个统一的流

      本文链接:https://www.haomeiwen.com/subject/ykrqyttx.html