首页 > 其他 > 详细

JDK1.8 Stream

时间:2019-11-14 21:03:47      阅读:102      评论:0      收藏:0      [点我收藏+]

Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。

Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。

这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。

元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果

技术分享图片

一、创建流

  1、 Collection接口有默认的stream方法,这个也就是大家平时用的list.stream(),只要是这个接口的实现类都可以通过这种方式去创建一个流

Lists.newArrayList().stream();

  2、Stream的静态方法

// 1、通过 build 方法创建

Stream.Builder builder = Stream.builder(); builder.accept(1); builder.add(2); Stream build = builder.build();
// 2、通过Stream.of 方法创建
// of有2个重载的方法,一个是接受一个对象,一个是接受可变参数创建流 Stream s1 = Stream.of(1); Stream s2 = Stream.of(1,2,3,4,5);
// 3、通过Stream.generate 静态方法去创建一个流。这个特别需要注意,这个方法是创建无限流,如果不在调用这个函数后调用limit方法去限制流的长度,则会无限创建下去

// 这里传入的行为参数一定是有返回值的,也就是行为的结果是创建了一个对象。
Stream generate = Stream.generate(Math::random).limit(10); Stream g2 = Stream.generate(() -> Math.random()).limit(10);
// 4、通过Stream.iterate 迭代的去创建流,同上也是无限流,不同的地方在于这个函数有2个参数,第一个参数是基值,第二个参数是基于第一个参数的运算函数。如下生成自然数序列

//  这里iterate,会迭代的进行第二个参数的运算,

 Stream limit = Stream.iterate(0, n -> n +1).limit(10);
 // 5、 Stream.empty()创建一个空的流
// 6、Stream.concat(arg1,arg2) 将2个流合并为一个流

 

 

 

JDK1.8 Stream

原文:https://www.cnblogs.com/Java-luan/p/11861935.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!