从委托到 lambda 表达式介绍(lambda表达式用法介绍)

基础使用方法

public class MainRunner{
	public static void main(){
		String name = getName(name->name.substring(1,2));
	}
	public static String getName(INameHandler handler){
		return handler.handleName("小李子的名字比较长");
	}
}
public interface INameHandler(){
	public String handleName(String name);
}

方法 main 中的输出结果为:name = “李子”
为什么呢?
关键还得看这一句,name->name.substring(1,2),实际上等价于创建了一个对象:

INameHandler nameHandler = new INameHandler() {
	@Override
	public String handleName(String name) {
		return name.substring(1,2);
	}
};
  • name:接口方法中的参数
  • ->:固定搭配(代表后面是方法中的处理代码)
  • name.substring(1,2):方法实现体

当然,lambda表达式还有更加完整的写法,但是越简单是越好的。

(name)->{ return name.substring(1,2); }

  • 小括号包起参数列表(参数只有一个的情况下才可以省略)。
  • 花括号包方法实现体(代码只有一句的情况下才可以省略)。
  • return为返回结果(代码只有一句的情况下才可以省略)。
JDK类使用lambda表达式
使用 List 来排序
List<String> names = new ArrayList<>();
names.add("134493");
names.add("234");
names.add("34543555");
names.sort((n1,n2)->n1.length()-n2.length());

而用以前的匿名内部类来处理这段代码会怎样?

List<String> names = new ArrayList<>();
names.add("134493");
names.add("234");
names.add("34543555");
names.sort(new Comparator<String>() {
	@Override
	public int compare(String n1, String n2) {
		return n1.length()-n2.length();
	}
});

很糟糕对吧,我们只是想要简单地排序一下而已。

输出Map中的所有value
Map<String, String> map = new HashMap<>();
map.put("1", "jason");
map.put("2", "lily");
map.put("3", "ben");
map.forEach((k,v)->System.out.println(v));

而用以前的匿名内部类来处理这段代码会怎样?

不说了,以前的实现方式太痛苦了。
结语

善用lambda表达式,可以少写很多代码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值