lambda表达式

一、简单介绍lambda表达式    

lambda接口满足的条件:接口有且只有一个方法,default方法、static方法除外,@FunctionalInterface会告诉编译器编译的时候判断方法到底是不是一个function的接口,标注了@FunctionalInterface的接口,如果下面方法不满足,会报错。

java中很多的以前的方法都加了@FunctionalInterface,比如Runnable接口、Comparator

 

1.lambda的的语法。
2.在哪里如何使用lambda。
3.execute around pattern
4.Functional interfaces
5.Method references方法引用
6.Type interface类型推导。
7.Composing lambdas 组合lambda表达式。

 

lambda可以很清晰的定义、代表一个匿名函数。它没有名字,但是它有一系列的参数,body,返回值类型,也有可能有一系列的异常被抛出。
匿名的
函数式的
可以被传递的
清晰的。

 

二、lambda表达式的语法构成:

parameter list       arrow    lambda body
(o1, o2)             ->        o1.getColor().compareTo(o2.getColor());

 

三、举例子:      

Apple.java:

package com.cy.java8;

import lombok.Data;

@Data
public class Apple {

    private String color;
    private long weight;

    public Apple(String color, long weight) {
        this.color = color;
        this.weight = weight;
    }
}

LambdaExperssion.java

package com.cy.java8;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

public class LambdaExperssion {

    public static void main(String[] args) {

        // 以前怎么写的,比如给Apple排序
        Comparator<Apple> byColor = new Comparator<Apple>() {
            @Override
            public int compare(Apple o1, Apple o2) {
                return o1.getColor().compareTo(o2.getColor());
            }
        };

        List<Apple> appleList = Collections.emptyList();
        appleList.sort(byColor);

        // 用lambda表达式
        Comparator<Apple> byColor2 = (o1, o2) -> o1.getColor().compareTo(o2.getColor());

        Function<String, Integer> fLambda = s -> s.length();

        /**
         * 一步步的简化
         * 去掉花括号
         * 只有1个参数,可以去掉参数列表的括号
         */
        Predicate<Apple> p = (Apple a) -> {
           return a.getColor().equals("green");
        };
        Predicate<Apple> p1 = (Apple a) -> a.getColor().equals("green");
        Predicate<Apple> p2 = a -> a.getColor().equals("green");

        //这两个等价
        Predicate<Apple> p3 = a -> a.getColor().equals("green");
        Function<Apple, Boolean> f = a -> a.getColor().equals("green");

        Runnable r = () -> {};

        Supplier<Apple> s = () -> new Apple("green", 2);
        System.out.println(s.get());
    }
}

 

总结下lambda表达式的语法:
(parameters) -> expression
(parameters) -> {statments;}
() -> {}

 

转载于:https://www.cnblogs.com/tenWood/p/11485219.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值