美文网首页
jdk8的Stream学习之创建流

jdk8的Stream学习之创建流

作者: 他们叫我小白 | 来源:发表于2019-01-17 00:05 被阅读0次

    JDK8的流式编程来来回回走马观花也看了几遍了。工作中一般的集合类操作能用流式操作的也都用流式操作。今天正儿八经的记录的方式开始写流式操作学习历程

    今天首先学习下怎么创建一个流。

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

    ···

    Lists.newArrayList().stream();

    ···

    2:Stream的静态方法

            2.1:通过build方法创建。这个创建成一个builder对象,然后通过accept和add去填充对象。然后通过build方法去构建流

            ```

    Stream.Builder builder = Stream.builder();

    builder.accept(1);

    builder.add(2);

    Stream build = builder.build();

            ```

            2.2,通过stream.of去创建一个流,of有2个重载的方法,一个是接受一个对象,一个是接受可变参数创建流

            ···

    Stream s1 = Stream.of(1);

    Stream s2 = Stream.of(1,2,3,4,5);

    ···

            2.3通过Stream.generate 静态方法去创建一个流。这个特别需要注意,这个方法是创建无限流,如果不在调用这个函数后调用limit方法去限制流的长度,则会无限创建下去

    ···

    Stream generate = Stream.generate(Math::random).limit(10);

    Stream g2 = Stream.generate(() -> Math.random()).limit(10);

    ···

            这里传入的行为参数一定是有返回值的,也就是行为的结果是创建了一个对象。

            2.4通过Stream.iterate 迭代的去创建流,同上也是无限流,不同的地方在于这个函数有2个参数,第一个参数是基值,第二个参数是基于第一个参数的运算函数。如下生成自然数序列

    ···Stream limit = Stream.iterate(0, n -> n +1).limit(10);···

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

            2.5 Stream.empty()创建一个空的流

            2.6Stream.concat(arg1,arg2) 将2个流合并为一个流

    创建了流对象以后,就可以进行流对象的其他操作了。下一章我们学习流式操作

    相关文章

      网友评论

          本文标题:jdk8的Stream学习之创建流

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