查看: 144|回复: 0

Lamda表达式学习笔记一

[复制链接]
发表于 2020-2-16 09:56:31 | 显示全部楼层 |阅读模式
                          Lamda表达式学习笔记一

一、Lamda语法解释

  三傻大闹宝莱坞的主人公兰彻说的一句话让我映像深刻:用简单的语言来表达同样的意

我并不是说书上的定义怎么怎么不对,而是应该理解书籍上的定义,并用简单的话语描述!

那么正题来了,lamda表达式是什么?

定义:lamda表达式是一个可传递的代码块,可以在以后实行一次或多次(将代码像数据一样进行传输)。

可传递的代码块?匿名内部类就是一种代码块!
  1. 1 /** 2      * 普通匿名函数 3      */ 4     @Test 5     public void test() { 6         Comparator comparator = new Comparator() { 7             @Override 8             public int compare(Integer x, Integer y) { 9                 return Integer.compare(x, y);10             }11         };12         Treeset ts = new TreeSet(comparator);13     }14 15     /**16      * lamda表达式17      */18     @Test19     public void test1() {20         Comparator comparator = (x, y) -> Integer.compare(x, y);21         TreeSet ts = new TreeSet(comparator);22     }
复制代码
证实了lamda语法确实能取代匿名函数,也就意味着lamda表达式必要接口的支持。


必要怎么样的接口来支持lamda表达式呢?这个问题我们后面再说。


二、Lamda语法


  分别是


  • 参数列表
  • lamda符号
  • lamda体,接口抽象方法的实现
此处的参数列表是接口中抽象方法的形参,lamda体则是对于接口抽象方法的实现,那我们写lamda表达式用接口中哪一个方法?这个问题,jvm是不知道的,所以我们必要的接口就是只有一个抽象方法的接口
函数式接口:只有一个抽象方法的函数,通常函数式接口用@functionInterface来声明

三、lamda表达式的体现情势

lamda表达式的4种情势
  1. /**     * 无参->无返回值     */    @Test    public void test2() {        Runnable runnable = () -> System.out.println("hahahah");        runnable.run();    }
复制代码
View Code    2.无参->有返回值

  1. /**     * 无参->有返回值     */    @Test    public void test3() {        Supplier consumer = () -> 10;        Integer o = consumer.get();        System.out.println(o);    }
复制代码
View Code
    3.有参->无返回值

  1. /**     * 有参->无返回值     */    @Test    public void test4() {        Consumer consumer = (x) -> System.out.println();        consumer.accept("hahahah");    }
复制代码
View Code
         4.有参-有返回值

  1. /**     * 有参->有返回值     */    @Test    public void test5() {        Function function = (x) -> x * x;        System.out.println(function.apply(1000));    }
复制代码
View Code
四、四大内置函数式接口

这四个接口分别是:Consumer,Supplier,Function,Predicate
  1.Consumer 消费型接口

[code]@FunctionalInterfacepublic interface Consumer {    void accept(T var1);    default Consumer andThen(Consumer

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?用户注册

x

相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表