栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

lambda表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

lambda表达式

函数式接口
@FunctionalInterface
public interface MathOperation {

    int operation(int a, int b);

    static int sum(int a, int b) {
        return a + b;
    }
}

可以这样写:

MathOperation operation = (a, b) -> a + b;
operation.operation(2, 3);
方法引用::

以上是两数相加,其实MathOperation已经有sum函数,又可以写为:

MathOperation operation = (a, b) -> MathOperation.sum(a, b);

用 :: 可以简化为:

MathOperation operation = MathOperation::sum;
forEach
List letters = Arrays.asList("a", "b", "c");
        for (String letter : letters) {
            System.out.println(letter);
        }

可以这样写:

List letters = Arrays.asList("a", "b", "c");
        letters.forEach(n -> System.out.println(n));
        // 使用方法引用::简化为:
        letters.forEach(System.out::println);
Predicate
List letters = Arrays.asList("a", "ab", "c");
        filter(letters, n -> n.startsWith("a"));
        
public void filter(List letters, Predicate condition) {
        letters.forEach(letter -> {
            if (condition.test(letter)) {
                System.out.println(letter + ".");
            }
        });
    }

可以使用stream API简化,filter参数也是Predicate:

letters.stream().filter(n -> n.startsWith("a")).forEach(n -> System.out.println(n + "."));

Predicate 有 and、or等default方法:

Predicate predicate = n -> n.startsWith("a");
        letters.stream().filter(predicate.and(n -> n.length() == 2))
                .forEach(n -> System.out.println(n + "."));
Map
List letters = Arrays.asList("a", "ab", "c");
        letters.stream().map((String letter) -> letter + ".").forEach(System.out::println);
reduce()
List letters = Arrays.asList("a", "ab", "c");
        String s = letters.stream().map((String letter) -> letter + ".")
                .reduce((append, letter) -> append + letter).get();
        System.out.println(s);
collect()
List letters = Arrays.asList("ab", "ab", "c");
        List list = letters.stream().filter(letter -> letter.contains("a"))
                .map(String::toUpperCase)
                .filter(letter -> letter.contains("A"))
                .distinct()
                .collect(Collectors.toList());
        
summaryStatistics
List letters = Arrays.asList("1", "2", "3");
        IntSummaryStatistics statistics = letters.stream().mapToInt(Integer::parseInt).summaryStatistics();
        int min = statistics.getMin();
        int max = statistics.getMax();
        long sum = statistics.getSum();
        double average = statistics.getAverage();
        long count = statistics.getCount();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/696655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号