对Stream的总结

本文介绍了JavaStream流的基本概念,如何从不同数据类型获取流,以及stream流的中间方法如过滤、限制元素、去重、转换和终结操作,包括foreach遍历、统计、转换为数组和收集到列表、集合和映射中。重点突出了lambda表达式的使用和类型转换技巧。
摘要由CSDN通过智能技术生成

以下均为个人理解

如有不对请在评论区指正QAQ

图片出自黑马程序员Java零基础视频教程_下部

1.什么是stream流

        stream可以看作是一条流水线  可以将单双列集合 数组 和一些零散的数据跟流水线一样,一个一个的放上去并进行各种操作

2.获取stream流

        在获取stream流的过程中,每个不同的数据类型都有不同的获取方式

单列集合

简化为lambda表达式

其中  stream是获取一个流水线,即将list中所有的数据一个一个放到流水线上

foreach是最简单高效的打印方法  其中s是每一个数据 此方法类似于for循环 将索引所对应的数据挨个遍历(个人理解)

双列集合

注意:双列集合无法直接使用stream,可以获取其中的键和值分别使用stream流,或者将其看成键值对一个整体,利用entrySet将其整体存入一个单列集合中然后使用stream

数组

注意:如果想将数组中的元素一个一个放到stream中数组必须是引用数据类型,如果传递基本数据类型,会把整个数组当作一个元素直接放到stream中

一堆零散数据

注意:这些数据需要是同种数据类型

基本数据类型和引用数据类型都可以直接使用stream

of的细节

3.stream流的中间方法

注意1示例展示:

1.filter 过滤

底层为hashcode和equals方法

如果流中装的是student等自定义的类 一定要重写hashcode和equals方法

匿名内部类写法:

lambda

2.limit 获取前几个元素

3是代表获取前三个元素

3.skip 跳过前几个元素

4代表跳过前四个元素

4.distinct 去重

5.concat 合并a和b两个流为一个流

尽可能让数据类型保持一致

如果不一致会提取两个元素的共同父类,将以父类的类型放入stream流中 此时子类中定义的方法将不能被使用

6.map转换流中的数据类型

!!!这块错了

切割后 姓名是0索引 年龄是1索引(对不起截图的时候我是真的忘了split方法 QAQ)

map中的s表示的是 姓名-年龄

foreach中的s表示的是 转化为int类型后的年龄

lambda写法(看着真的很简单)

4.steam流的终结方法

结束这条流水线

1foreach 遍历

lambda

2count 统计

统计里面有多少个

3toarray 收集流中的数据放到数组中(写的有点乱)

!!很重要  因为数组是可变参数 很多方法前面的泛型必须是可变参数  所以要用这个方法来转化类型

这个是放到object类型中的数组中

下面是如何放到指定类型的数组中

太复杂了还是看lambda吧

理解:

toArray后面的value是所指定的数组类型  new String[value] 是创建了一个指定数据类型的数组

4collect收集流中的数据放到集合中(list set map)

list

set

二者的区别:

如果集合中有重复元素

list不会去重 set会去重

map

太复杂了还是用lambda简单

注意:如果要把数据搜集到map集合中 键不能重复 否则代码报错

还是看看lambda吧

神清气爽了

tomap中  第一个s是键的规则  第二个s是值的规则

看这里用到了parseInt是将字符串转为十进制的数字,默认为十进制

总结

后面为课程里的练习

用于自己记录

写完练习发现lambda真的好方便

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值