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个流合并为一个流
创建了流对象以后,就可以进行流对象的其他操作了。下一章我们学习流式操作
网友评论