lambda表达式

lambda表达式

1,引入lambada表达式

需求:把行为作为一个对象,并将它作为一个参数传递给另一个方法

  1. 声明一个变量,并给变量赋值
Function funtion = public static void hello(){
    System.out.println("hello world");
}
  1. 简化表达式
//public是声明调用范围的,可去掉
//static是来指明属于类的,还是对象的,可去掉
Function function = void hello(){
    System.out.println("hello world");
}
//该方法已赋值给了变量,因此方法名可去掉
Function function = ()->{System.out.println("hello world");};
  1. 声明接口
public class Demo {
    public static void main(String[]args){
        Function function = ()->{System.out.println("hello world");} ;
        function.foo();
    }
}
interface Function{
    void foo();
}

2,lambda表达式的本质

lambda表达式本质上是定义一个匿名内部类。(可以把lambda表达式等价于一个接口)

匿名内部类,可以对接口和抽象类进行使用,直接生成其子类或实现类对象。lambda表达式就是一种使用匿名内部类的简化方法,但lambda表达式的适用范围仅仅是接口,且接口内只能有一个抽象方法。

3,lambda表达式的使用

  1. 形参位置
  2. 成员变量位置
  3. 返回值位置

4,lambda常见应用场景

  1. 遍历集合
String[] atp = {"Rafael Nadal", "Novak Djokovic",
       "Stanislas Wawrinka",
       "David Ferrer","Roger Federer",
       "Andy Murray","Tomas Berdych",
       "Juan Martin Del Potro"};
List<String> players =  Arrays.asList(atp);
// 以前的循环方式
for (String player : players) {
     System.out.print(player + "; ");
}
// 使用 lambda 表达式以及函数操作(functional operation)
//forEach也是一个接口
players.forEach((player) -> System.out.print(player + "; "));
// 在 Java 8 中使用双冒号操作符(double colon operator)
players.forEach(System.out::println);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值