Java_就业班_Lambda表达式&方法的引用&Stream流&函数式接口

Lambda表达式

函数式接口

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

方法的引用

Stream流

在这里插入图片描述**加粗样式**在这里插入图片描述

Stream流中常见的操作

在这里插入图片描述
体验Stream流 "掌握"
问:
IO流跟Stream流有什么区别?
这两个知识点是完全不一样的东西。
IO流可以对本地的文件进行读写
Stream流可以对集合,数组,一堆数据进行操作。

Stream流的常见生成方式"掌握"
结论:
1.单列集合
List / Set
集合对象.stream();
2.双列集合
无法直接获取Stream流对象,需要间接获取
3.数组
Arrays.stream(数组);
案例:
int [] arr = {1,2,3,4,5};
Arrays.stream(arr).forEach(System.out::println);
4.一堆数据
Stream.of(1,2,3,4,5,6).forEach(System.out::println);
方法:
中间方法
调用完中间方法之后,还可以继续调用其他的中间方法或者终结方法。
终结方法
forEach count
当调用完终结方法之后,那么就不能再使用这个流了。
Stream的设计理念:
采取了流式布局。
在流中对数据进行操作,是不会影响集合中的数据的。
在流中的每一个步,是不保留数据的。当数据经过了第一步后,此时数据就到了第二步了。
第一步的流只能被调用一次,所以一般采取链式编程结构。

filter方法"掌握"
过滤:
把不满足条件的数据给过滤掉。
留下满足条件的数据

limit&skip
limit:获取前几个元素
skip:跳过前几个元素,获取剩余的元素。
案例:
1,2,3,4,5,6,7,8,9,10.
我想获取 4 - 6
思路1:
第一步:先跳过前3个元素,获取 4,5,6,7,8,9,10.
第二步:再获取前3个元素,得到 4,5,6
思路2:
第一步:先获取前6个元素,获取 1,2,3,4,5,6
第二步:再跳过前3个元素,获取剩余的 4,5,6
代码案例:
跳过 获取前3个
Stream.of(1,2,3,4,5,6,7,8,9,10).skip(3).limit(3).forEach(System.out::println);
获取前6个 跳过
Stream.of(1,2,3,4,5,6,7,8,9,10).limit(6). skip(3).forEach(System.out::println);

concat&distinct
concat:就是把两个流中的数据合在一起。
distinct:去重。
依赖的是hashcode和equals方法。
注意点:
如果此时容器中装的是自定义对象,那么必须重写hashcode和equals方法。
总结:
什么时候需要重写hashcode和equals?
a,要往 HashSet 里面存自定义对象的时候。
b,要往 LinkedHashSet 里面存自定义对象的时候。
c,要往 HashMap 的键位置存自定义对象的时候。
d,要往 LinkedHashMap 的键位置存自定义对象的时候。
e,Stream流中的distinct方法也需要重写。
f,两个对象要进行元素的比较时。//自动登录小案例
g,集合的contains方法底层是依赖equals方法来确定是否包含的。
h,集合的indexOf方法底层是依赖equals方法来确定索引位置的。
i,集合的remove(对象)方法底层是依赖equals方法来确定是否需要删除的。

sorted
功能:
排序。
sorted(): 空参依赖的排序规则是自然排序。
sorted(比较器对象): 带参依赖的排序规则是比较器中的规则
总结:
什么时候需要指定规则?
“只要是排序的时候都需要指定规则。”
a,TreeSet 存储自定义对象时
b,TreeMap 的键位置存储自定义对象时
c,List集合中的sort方法
d,Collections中的sort方法
e,Stream流中的sorted方法

map&mapToInt
map:底层依赖的是Function接口
是为了执行一段代码。
可以把A类型变成B类型
//“123” —> 123
//new Student(“zhangsan”,23); —> “zhangsan”
//123 —> “123”
mapToInt: 就是为了把A类型变成 int 类型
例:
在这里插入图片描述

forEach&count
forEach:就是遍历流中的数据。
count : 就是统计流中还剩下多少个数据。
注意点:返回值是long类型。
注意点:
这两个都是终结方法。当调用完这两个方法后,不能再次调用流中的其他数据。

Stream流的收集操作
因为Stream流不保留数据。也不能对集合中的数据进行修改。
如何我现在有一个需求,想要保留我操作完毕之后的数据,改怎么办?
目的:
就是把流中的数据放到集合中保存。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值