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