• 技术文章 >java >java基础

    java数据流的高级用法

    小妮浅浅小妮浅浅2021-02-20 09:46:24原创2121

    本教程操作环境:windows7系统、java10版,DELL G3电脑。

    1.reduce

    对于更细粒度的控制,有另一个流 API 函数,名为reduce,可用于对 Number 流中的值求和:

    Integer sum4AllHarder = listOfNums
        .parallelStream()                           // 多线程
        .map(Number::getValue)                      // 每个 Number 的值
        .reduce(0, (sofar, next) -> sofar + next);  // 求和

    2.collect

    collect是非常有用的终止操作,将流中的元素存放在不同类型的结果中。Java8通过内置的Collectors类支持多种内置的收集器。所以对于大部分常见操作,并不需要自己实现收集器。

    List<Person> filtered =
       persons
    .stream()
    .filter(p -> p.name.startsWith("P"))
    .collect(Collectors.toList());
     
    System.out.println(filtered); // [Peter, Pamela]

    3.flatMap

    flatMap将流中的每个元素,转换为其它对象的流。所以每个对象会被转换为零个、一个或多个其它对象,以流的形式返回。这些流的内容之后会放进flatMap所返回的流中。

    List<Foo> foos = new ArrayList<>();
     
    // create foos
    IntStream
    .range(1, 4)
    .forEach(i -> foos.add(new Foo("Foo" + i)));
     
    // create bars
    foos.forEach(f ->
    IntStream
    .range(1, 4)
    .forEach(i -> f.bars.add(new Bar("Bar" + i + " <- " + f.name))));

    以上就是java数据流的高级用法,在使用之前需要对这些函数的基础用法有所了解,再结合我们所学的数据流进行运用。基础知识不够牢固的,可以去查阅对应的资料进行复习。

    专题推荐:java 数据流高级用法
    上一篇:java数据流的工作原理 下一篇:java压缩流的压缩与解压

    相关文章推荐

    • java中的轮换流是什么• 转换流在java中的两种类• java打印流的输出使用• java管道流发送线程• 对象流在java中的读写• java数据流的工作原理

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网