lambda 表达式


前言

lambda 表达式 是:允许你用表达式来代替接口的一种写法 ,

一、lambda怎么用

用在各种接口中 , 比较常见的有比如创建堆时候,提供的比较器,就可以用lambda表达式来代替 , 比如在多线程的时候, 也可以用lambda来简化表达

要想说明lambda 表达式具体用处 ,就得说明接口 ,而在接口中 有一种接口被称为函数式接口 ,

函数式接口 : 一个接口中只有一个抽象方法 . 如果在一个接口上面声明@FunctionalInterface 注解,那么编译器就会按照函数式接口的定义来要求该接口.

lambda的语法

(形参列表(可以不写)) -> 方法体
例如

x -> 2 * x
表示接受一个参数类型 ,返回其2倍的值

参数的类型 只有一个的时候 可以省略 ,还可以省略参数的括号

(int x, int y) -> x * y
表示接受俩个int类型的参数 , 返回他们的乘积

类型不可以单独省略,除非一起省略!

(String s) -> System.out.print(s)
表示接受一个String类型的值, 结果打印一条输出语句

可以省略return
lambda中不能作用范围相同的形参
lambda可用于foreach打印

lambda的具体示范

函数式接口示范

interface NoParameterNoReturn {
    //注意:只能有一个抽象方法
    void test();
   /* static void test2() {
    }
    default void test3() {
    }*/
}
 public static void main1(String[] args) {
        //函数式接口
        NoParameterNoReturn noParameterNoReturn = new NoParameterNoReturn() {
            @Override
            public void test() {
                System.out.println("hello");
            }
        };
        noParameterNoReturn.test();
    }

运行结果
在这里插入图片描述

lambda简化后写法

//无返回值一个参数
@FunctionalInterface
interface OneParameterNoReturn {
    void test(int a);
}
 public static void main(String[] args) {
       
        //参数的类型 只有一个的时候 可以省略 ,还可以省略参数的括号
        OneParameterNoReturn oneParameterNoReturn = x-> System.out.println(x+10);
        oneParameterNoReturn.test(19);
        //类型不可以单独省略,除非一起省略!
        MoreParameterNoReturn moreParameterNoReturn = (x,y)-> System.out.println(x+y);
        moreParameterNoReturn.test(10,20);
    }

运行结果
在这里插入图片描述
lambda省略return

interface MoreParameterReturn {
    int test(int a,int b);
}
public static void main(String[] args) {
        //可以省略return
      
        MoreParameterReturn moreParameterReturn = (x,y) -> x*y;
        ret = moreParameterReturn.test(10,20);
        System.out.println(ret);

    }

运行结果
在这里插入图片描述
用于foreach打印

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add("this");
        list.add("day");

        /*list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });*/
        list.forEach(s -> System.out.println(s));
        System.out.println("=====");
        /*list.sort(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
        });*/
        list.sort(((o1, o2) ->  {return o1.compareTo(o2);}));
        list.forEach(s -> System.out.println(s));
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值