重学Lambda表达式1

1.lambda是个匿名函数,可以说成抽象函数的实例,使java的语言能力得到提升
1.1格式 (x,y)-> {} 左边称为形参列表(抽象方法的形参列表),右边称为方法体(重写之后的方法体)
1.2 只要一个抽象方法的接口可以称之为函数式接口
2.要使用lambda表达式要实现函数示接口(FunctionInterface),主要是自带的四大函数式接口
3.示例,基本的使用

@Test
    public void  test7(){

        Comparator<Integer>  con1 = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(o1,o2);
            }

        };
  int com = con1.compare(12, 21);
        System.out.println(com);
        }

返回结构为-1 ,前面的值比后面小
如果使用lambda表达式,可以改写成

  Comparator<Integer> comparator = ((o1, o2) ->
                 Integer.compare(o1,o2)

       );
        int i = comparator.compare(20, 30);
        System.out.println(i);
 

如果使用方法引用,代码变得更简洁

Comparator<Integer> comparator1 = Integer::compare;

4.通过上述的简单示例可以基本看出lambda基本格式,下面简单看下lambda表达式的常见6个类型
4.1 无参无返回值

  Runnable runnable = ()-> {
        System.out.println("hhhhh");

    };
    runnable.run();

4.2 需要一个参数,没有返回值

@Test
public  void  test8(){

    Consumer<String> consumer = (String s)->{
        System.out.println(s);
    };
    consumer.accept("xxxxxxxxx");
}

4.3数据类型可以省略,可以由编译器推断,和上面的例子相比,少了形参的类型String

   public  void  test8(){

        Consumer<String> consumer = (s)->{
            System.out.println(s);
        };
        consumer.accept("xxxxxxxxx");
    }

4.4 若只需要一个参数,小括号可以省略,这里不做示例,参照4.3

4.5 .需要两个以上的参数,并且有多条执行语句,可以有返回值,不做示例,参照3
4.6 lambda体中只有一条执行语句,return和{}都可以省略,不做示例
5.在java.util.function包下定义了丰富的函数式接口
5.1 四大函数式接口
Consumer 返回类型 void
Supplier、 返回值类型 无
Function<T.R> 返回值类型R
Predicate 返回值类型Boolean
6.方法的引用
6.1 要传递给lambda体的操作,已经有实现的方法,可以使用方法引用,主要是类和对象的引用,将在下篇文介绍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值