lambda表达式的简单使用

Posted dayu007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lambda表达式的简单使用相关的知识,希望对你有一定的参考价值。

使用 java.util.function.Predicate 函数式接口以及 lambda 表达式,可以向 API 方法添加逻辑。用更少的代码支持更多动态行为。
下面的例子用Predicate接口做的过滤。
package com.mytest;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class LambdaTest {

    public static void main(String[] args) {
        List<String> strings = Arrays.asList("java","javaqwer","jsdfava", "merry", "tomorrow", "day");

        System.out.println("which start with j:");

        filter2(strings, (lan) -> lan.startsWith("j"));
        filter(strings, (str) -> str.startsWith("J"));
        System.out.println("Languages which ends with a ");
        filter(strings, (str) -> str.endsWith("a"));

        System.out.println("Languages which length>5");
        filter(strings, (str) -> str.length() > 5);

        System.out.println("Languages which contains a");
        filter(strings, (str) -> str.contains("a"));


        System.out.println("==========逻辑函数合并使用==========");
        //逻辑函数合并使用
        strings.stream().filter(startsWithJ.and(lengthOverFour)).forEach(str-> System.out.println(str));

    }

  //常规方式
private static void filter(List<String> strings, Predicate<String> condition) { for (String string : strings) { if (condition.test(string)) { System.out.println(string); } } }   
  //filter方法的改进版本
private static void filter2(List<String> strings, Predicate<String> condition) { strings.stream().filter(str -> (condition.test(str))).forEach(str -> System.out.println(str)); }      //Predicate允许多个合成一个,它提供了逻辑操作 and,or等方法,把这些拼接起来传入filter()方法中。如主函数方法中的最后一行代码 static Predicate<String> startsWithJ = (n) -> n.startsWith("j"); static Predicate<String> lengthOverFour = (n) -> n.length() > 4; }

 

以上是关于lambda表达式的简单使用的主要内容,如果未能解决你的问题,请参考以下文章

使用 savedInstanceState 保存和恢复 Kotlin lambda

lambda表达式的简单使用

python lambda表达式简单用法

Lambda表达式

python详解lambda匿名函数以及结合mapreducefiltersorted等使用

python lambda表达式