lambda表达式

2019-12-21  本文已影响0人  后来丶_a24d

简介

简介

参数列表 -> 表达式

参数列表 -> {表达式集合}

// 1. 返回给定字符串的长度(隐含return语句)
(String s) -> s.length()

// 2. 始终返回42的无参方法(隐含return语句)
() -> 42

// 3. 包含多行表达式,需用花括号括起来,并显示添加return
(int x, int y) -> {
    int z = x * y;
    return x + z;
}

需要符合条件


例子

行为参数化处理, 参数化处理更灵活

// 过滤器
public interface AppleFilter {
    boolean accept(Apple apple);
}

// 应用过滤器的筛选方法
public static List<Apple> filterApplesByAppleFilter(List<Apple> apples, AppleFilter filter) {
    List<Apple> filterApples = new ArrayList<>();
    for (final Apple apple : apples) {
        if (filter.accept(apple)) {
            filterApples.add(apple);
        }
    }
    return filterApples;
}

public static void main(String[] args) {
    List<Apple> apples = new ArrayList<>();

    // 筛选苹果
    List<Apple> filterApples = filterApplesByAppleFilter(apples, new AppleFilter() {
        @Override
        public boolean accept(Apple apple) {
            // 筛选重量大于100g的红苹果
            return Color.RED.equals(apple.getColor()) && apple.getWeight() > 100;
        }
    });
}
// 筛选苹果
List<Apple> filterApples = filterApplesByAppleFilter(apples,
        (Apple apple) -> Color.RED.equals(apple.getColor()) && apple.getWeight() >= 100);

参考文章

上一篇 下一篇

猜你喜欢

热点阅读