Lambda表达式详解

}

![在这里插入图片描述](https://img-blog.csdnimg.cn/720d2ac41eee4836ab6aec5edf316eae.png)


相信看到这里,对Lambda表达式的第一印象就是代码怎么这么短,这也就是lambda表达式的特性:简洁。


再看一个案例,比较数的大小



public void test03(){
Comparator comparator = new Comparator() {
@Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o1,o2);
}
};
int compare = comparator.compare(12, 21);
System.out.println(compare);
}


![在这里插入图片描述](https://img-blog.csdnimg.cn/9da3db9b88354e9f8b374ada986de751.png)


因为12是小于21的,所以这里返回的是-1;我们再来看看对应的lambda表达式的写法



public void test04(){
Comparator comparator = (o1,o2)-> Integer.compare(o1,o2);
int compare = comparator.compare(32,23);
System.out.println(compare);
}


![在这里插入图片描述](https://img-blog.csdnimg.cn/e22f149c4c194bdc93440d6c81a07f9c.png)


因为32大于23,所以返回值为1;


#### 3. lambda表达式组成


形如以下:



> 
> (o1,o2) -> Integer.compare(o1,o2)
> 
> 
> `左边` `->` `右边`
> 
> 
> 


* `->` 被称为lambda操作符或箭头操作符
* `左边`:lambda形参列表(其实就是接口中的抽象方法的形参列表)
* `右边`:lambda体 (其实就是重写的抽象方法的方法体)


#### 4. lambda表达式使用


##### 4.1 语法格式一



> 
> 无参无返回值
> 
> 
> 



public void test01(){
Runnable ri = new Runnable() {
@Override
public void run() {
System.out.println(“好好学习,天天向上”);
}
};
ri.run();
}



public void test02(){
Runnable r2 = ()-> {System.out.println(“学会lambda,快乐每一天”);};
r2.run();
}


##### 4.2 语法格式二



> 
> 需要一个参数但无返回值
> 
> 
> 



public void test05(){
Consumer consumer = new Consumer() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
consumer.accept(“这一路上走走停停”);
}



public void test06(){
Consumer consumer = (String s)->{System.out.println(s);};
consumer.accept(“留下少年漂流的痕迹”);
}


##### 4.3 语法格式三



> 
> 数据类型可以省略,由编译器去推断出,称为“类型推断”
> 
> 
> 



public void test05(){
Consumer consumer = new Consumer() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
consumer.accept(“这一路上走走停停”);
}



public void test06(){
Consumer consumer = (s)->{System.out.println(s);};//类型推断
consumer.accept(“留下少年漂流的痕迹”);
}


这里有些类似于使用集合类是前面指明过泛型后,后边不需要再次指明


##### 4.4 语法格式四



> 
> lambda若只需要一个参数时,参数的小括号可以省略
> 
> 
> 



public void test05(){
Consumer consumer = new Consumer() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
consumer.accept(“这一路上走走停停”);
}



public void test06(){
Consumer consumer = s->{System.out.println(s);};//类型推断
consumer.accept(“留下少年漂流的痕迹”);
}


##### 4.5 语法格式五



> 
> lambda需要两个或以上的参数,多条执行语句,并且可以有返回值
> 
> 
> 



public void test03(){
Comparator comparator = new Comparator() {
@Override
public int compare(Integer o1, Integer o2) {
System.out.println(o1);
System.out.println(02);
return Integer.compare(o1,o2);
}
};
int compare = comparator.compare(12, 21);
System.out.println(compare);
}



public void test04(){
Comparator comparator = (o1,o2)-> {
System.out.println(o1);
System.out.println(02);
return Integer.compare(o1,o2);};
int compare = comparator.compare(32,23);
System.out.println(compare);
}


##### 4.6 语法格式六



> 
> 当lambda体只有一条语句时,return与大括号若有,都可以省略
> 
> 
> 



public void test03(){
Comparator comparator = new Comparator() {
@Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o1,o2);
}
};
int compare = comparator.compare(12, 21);
System.out.println(compare);
}



public void test04(){
Comparator comparator = (o1,o2)-> Integer.compare(o1,o2);
int compare = comparator.compare(32,23);
System.out.println(compare);
}


#### 5. 总结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值