JAVA Stream流

一、什么是Stream流:

Stream流中的【流】即流水线,不是I/O流。
Stream流加上Lambda表达式极大的提高编程效率和程序可读性。
是对集合对象功能的增强, 他专注于对集合对象进行各种非常便利,高效的聚合操作, 或者大批量数据操作。

二、Stream的特点:

1.只能遍历一次
可以把流想象成一条流水线,流水线的源头是数据源(一个集合),数据源中的元素依次被输送到流水线上,可以在流水线上对元素进行各种操作。一旦元素走到了流水线的另一头,那么这些元素就被“消费掉了”,就无法再对这个流进行操作。当然,可以从数据源那里再获得一个新的流重新遍历一遍。

2.采用内部迭代方式
若要对集合进行处理,则需要手写处理代码,这就叫做外部迭代。而要对流进行处理,只需告诉流需要什么结果,处理过程由流自行完成,这就称为内部迭代。

注意:
Stream自己不会存储元素
Stream不会改变源对象。相反,他会返回一个持有结果的新Stream
Stream操作是延迟执行的。意味着他会等到需要结果的时候才执行

三、Stream的操作过程:

1.创建Stream
一个数据源(如:集合、数组),获取一个流

2.中间操作
一个中间操作链,对数据源的数据进行处理

3.终止操作(终端操作)
一个终止操作,执行中间操作链。并产生结果
在这里插入图片描述

四、创建Stream流的方式:

1.通过Collection的Stream()⽅法(串⾏流)或者 parallelStream()⽅法(并⾏流)创建Stream。

List<String> list = Arrays.asList("1","2","3","4","0","222","33");
Stream<String> stream = list.stream();
Stream<String> stream1 = list.parallelStream()

2.通过Arrays中得静态⽅法stream()获取数组流

IntStream stream = Arrays.stream(new int[]{1,2,3});

3.通过Stream类中得 of()静态⽅法获取流

Stream<String> stream = Stream.of("a","b","c");

4.创建⽆限流(迭代、⽣成)

//迭代(需要传⼊⼀个种⼦,也就是起始值,然后传⼊⼀个⼀元操作)
Stream<Integer> stream1 = Stream.iterate(2,(x)-> x *2);
//⽣成(⽆限产⽣对象)
Stream<Double> stream2 = Stream.generate(()-> Math.random());

五、对集合、数组的操作

List的常用Lambda操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值