Java基础-Java8特性-Lambda表达式和Stream

Java8特性-Lambda表达式和Stream

日常求赞,感谢老板。

欢迎关注公众号:其实是白羊。干货持续更新中…

Lambda表达式可以理解为:简写的函数式接口的实现。
对于“函数式接口”的简化写法(和其他特性结合构成更加简洁的代码结构)

函数式接口:接口中只有一个抽象方法(可以有默认方法和静态方法),为了保障只有一个抽象方法,可以在接口上添加@FunctionalInterface注解

1.语法

(参数)->{

实现方法的方法体 ;

}

注:参数和方法体只有一个(一条一句)时,()和{}可以省略。

2.用法

  • 配合集合的.forEach()方法进行遍历,例如:list.forEach(p->syso§);

还可以再进行简化list.forEach(system.out::println);(解释下这里每次遍历只有一个值所以参 数不用写啦,方法前用::标识)

  • 代替匿名内部类(前提是接口为“函数式接口”),如创建线程:new Thread(()->syso()).start();

再如排序:list.sort((o1,o2)-> return o1.param()-o2.param());

  • Stream是对集合的包装,通常和lambda一起使用。 使用lambdas可以支持许多操作,如 map, filter, limit, sorted, count, min, max, sum, collect 等等

    • filter():过滤数据,例如:list.stream().filter(p->(p>10)).forEach();(注意后面的lambda体这次试用()括起来的而不是{})

    • collect():将stream转成集合,例如:list.stream().filter(p->(p>4)).collect(Collectors.toList()/toSet());

    • distinct():排除相同的元素

    • limit():取前几条 limit(3)

    • skip():抛弃前几个

    • map():接受一个方法做参数,这个方法会作用在每个元素身上,并将其映射成一个新的函数,例如:list.stream().map(Person::getAge).map(String::length).map(s->s.split()).forEach(…);

    • flatMap():和map有点区别,他能让我们操作到类似List<List<?>>这种结构中的内层容器的元素。流的扁平化如List<List>这种结构,list.stream().flatMap(list->list.stream())

总结

日常乞讨

  • 如果你认为本文对你有帮助,还请「在看/转发/赞/star」,多谢
  • 如果你还发现了更好或不同的想法,还请在留言区不吝赐教,一起探讨交流修改,万分感谢

欢迎持续关注公众号:「其实是白羊」

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值