【无标题】

目录:


一:lambda表达式
1.lambda 表达式简介
        lambda表达式可以用非常少的代码实现抽象方法。lambda 表达式不能独立执行,因此必须实现函数式接口,并且会返回一个函数式接口的对象。

语法格式如下:

() -> 结果表达式
参数 -> 结果表达式
(参数1,参数2,...,参数n) -> 结果表达式
二.lambda 表达式实现函数式接口
   lambda表达式可以实现函数式接口,本节将讲解函数式接口概念以及用 lambda 表达式实现不同类型的函数式接口。

1.函数式接口
        函数式接口指的是仅包含一个抽象方法的接口,接口中的方法简单明了地说明了接口的用途。

自定义函数式接口

interface Mylnterface {
void method();}
2.lambda 表达式实现无参抽象方法
【例题14.1】使用lambda表达式实现打招呼接口

3.lambda表达式实现有参抽象方法
[例14.2]使用lambda表达式做加法计算

4.lambda表达式使用代码块
[例14.3]使用lambda表达式为考试成绩分类

三.lambda 表达式调用外部变量
lambda 表达式除了可以调用定义好的参数,还可以调用表达式以外的变量。

1.lambda表达式无法更改局部变量
[例14.4]使用lambda表达式修改局部变量【代码是错的】

2.lambda表达式可以更改类成员变量
[例14.5]使用lambda表达式修改类成员变量

四.lambda 表达式与异常处理
用多接口的抽象方法为了保证程序的安全性,会在定义时就抛出异常。

[例14.6]使用lambda表达式实现防沉迷接口

二.方法的引用
1.引用静态方法
        语法如下:

类名::静态方法名
[例14.7]使用lambda表达式引用静态方法

2.引用成员方法
、语法如下:

对象名,成员方法名
[例14.8]使用 lambda表达式引用成员方法

3.引用带泛型的方法
泛型是Java 开发经常使用到的功能,“.:”操作符支持引用带泛型的方法。除方法外,“.:”操作也支持引用带泛型的类。

[例14.9]使用 lambda表达式引用带泛型的方法

4.引用构造方法
        1.引用无参构造方法

语法:

类名::new
[例14.10]使用lambda表达式引用无参构造方法

2.引用有参构造方法

引用有参构造方法的语法与引用无参构造方法一样。区别就是函数式接口的抽象方法是有参数的。

[例14.11]使用lambda表达式引用有参数的构造方法

3.引用数组构造方法

5.Fuction 接口
在此之前的所有实例中,想要使用 ambda 表达式都需要先创建或调用已有的函数式接口14.2.5 Fuction 接口java.until.function 何己经摄供很多预定义函数式接口,就是没有实现任何功能,仅用来封装lambda达式的对象。

 Function 接口方法

[例14.13]使用lambda表达式拼接IP地址

三.流处理
[例14.14]创建员工类,并按照表 14.2创建初始化数据

1.Stream接口简介
流处理的接口都定义在 java.uil.stream 包下。BaseStream 接口是最基础的接口,但最常用的BaseStream接口的一个子接口——Stream接口,基本上绝大多数的流处理都是在Stream接口上实现的。

表14.3Stream接口的常用方法

Collection 接口新增两个可以获取流对象的方法。第一个方法最常用,可以获取集合的顺序流,方法如下:

Stream<E> stream();
第二个方法可以获取集合的并行流,方法如下:

Stream<E> parallelstream();
 因为所有集合类都是 Collection 接口的子类,如 ArrayList 类、HashSet 类等,所以这些类都可以进行流处理。例如:

List<lnteger> list = new ArrayList<lnteger>();
Stream<lnteger> s = list.stream();
2. Optional类


[例14.15]使用Optional类创建“空”对象

3.Collectors 类


4.数据过滤
1.filter()方法

filter0方法是 Stream接口提供的过滤方法。该方法可以将lambda表达式作为参数然后按照lambi表达式的逻辑过滤流中的元素。

[例14.16]输出110中的所有奇数

[例14.17]找出年龄大于30的员工

2.distinct()方法

[例14.18]去除List 集合中的重复数字

3.linit()方法

【例题14.19】找出所有员工列表中的前两位女员工

4.skip()方法

[例14.20]取出所有男员工,并忽略前两位男员工

5.数据映射
数据的映射和过滤概念不同:过滤是在流中找到符合条件的元素,映射是在流中获得具体的数据。

[例14.21]获取开发部所有员工的名单

[例14.21]计算销售部一个月的薪资总额

6.数据查询
1.allMatch()方法

allMatch0方法是 Stream 接口提供的方法,该方法会判断流中的元素是否全部符合某一条件,返回结果是 boolean 值。

[例14.23]检查所有员工是否都大于25岁

2.anyMatch()方法

anyMatch0方法是 Stream 接口提供的方法,该方法会判断流中的元素是否有符合某一条件,只个元素符合条件就返回true,如果没有元素符合条件才会返回 false。

[例14.24]检查是否有大于40岁的员工

3.noneMatch()方法

[例14.25]检查公司是否不存在薪资小于 2000元的员工

4.findFirst()方法

是 Stream 接口提供的方法,这个方法会返回符合条件的第一个元素

[14.26]找出第一个年龄等于21岁的员工

7.数据收集
1.数据统计

例14.27]统计公司各项数据,打印成报表

2.数据分组
数据分组就是将流中元素按照指定的条件分开保存,类似 SQL 语言中的“GROUPBY”关键字

 [例14.28]将所有员工按照部门分组

【例题14.29】将所有员工先按照部门分组,再按照性别分组


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值