Lambda表达式

1.基本概念:

【一】:Java8中引入了一个新的语法元素和操作符“->”,该操作符称为Lambda操作符或者箭头操作符,它将Lambda表达式分为两部分。左侧指定了Lam表达式所需的参数;右侧指定Lambda体,即要执行的功能。

【二】:Lambda表达式需要函数式接口的支持,该接口中只有一个抽象方法。并且可以使用注解@FunctionalInterface 修饰可以检查接口是否为函数时接口。

2.使用格式

格式1:无参数,无返回值

 public void test1(){
        int number = 0;
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("Test1;"+number);
            }
        };
        runnable.run();

        //---使用Lambda表示
        Runnable runnable1 = ()-> System.out.println("Test1 Lambda"+number);
        runnable1.run();

}

格式二:有一個参数,无返回值。当参数个数为一时可以省略()

public void test2(){
        Consumer<String> consumer = (x) -> System.out.println(x);
        //Consumer<String> consumer = x -> System.out.println(x);
        consumer.accept("有一個参数,无返回值");
}

格式三:有多个参数,有返回值,并且Lambda体含有多条语句

public void test3(){
        Comparator<Integer> comparator = (x,y)->{
            System.out.println("Lambda函数体中含有多条语句使用{}");
            return Integer.compare(x,y);
        };
    }

格式四:有多个参数并且Lambda体含只有一条语句时可以省略{}和return

public void test4(){
        Comparator<Integer> comparator = (x,y) -> Integer.compare(x,y);
}
3.总结

参数只有个参数时可以省略(),Lambda体只有一条语句是可以省略{}和return。Lambda 表达式的参数列表的数据类型可以省略不写,因为JVM编译器通过上下文推断出,数据类型,这个过程即“类型推断”。

补充:常见类类型推断应用场景

String[] strs = {"a", "b”, "c","d"};

List<String> list = new ArrayList<>();
4.demo

需求:对一个数进行运算,具体的运算逻辑放到Lambda体中
1.函数式接口声明

package com.mark.java8.lambda;

/**
 * Created by Choisaaaa on 2018/6/21.
 * 自定义函数式接口
 */
@FunctionalInterface
public interface MyFunction {
    Integer getResult(Integer number);
}

2.测试类

package com.mark.java8.lambda;

import org.junit.Test;

/**
 * Created by Choisaaaa on 2018/6/21.
 * 需求:对一个数进行运算,具体的运算逻辑放到Lambda体中
 * 步骤1:自定义一个函数式接口
 * 步骤2:编写调用接口的方法
 */
public class TestLambda3 {
    @Test
    public void test(){
        Integer result1 = operation(100,(x) -> x*x);
        System.out.println(result1);

        Integer result2 = operation(100,x -> x+100);
        System.out.println(result2);

        Integer result3 = operation(100,x -> x-50);
        System.out.println(result3);
    }

    public Integer operation(Integer number,MyFunction myFunction){
        return myFunction.getResult(number);
    }
}

3.运行结果

10000
200
50

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值