java8中的function函数方法是jdk1.8的新特性,其中的Predicate<T>方法使用非常广泛,predicate英文为断言,判断。Predicate <T>接口是一个函数式接口,里面返回Boolean值true或者false的test(Object)方法非常有用,下面以一个例子来让各位体会Predicate<T> function函数的好处。
说明:以下方法中例如“n -> true”这样的语句是java8新特性中的Lambda表达式,其构成部分是parameter -> expression body,“->”符号左边是参数,右边是方法体。
import java.util.Arrays; import java.util.List; import java.util.function.Predicate; public class PredicateDemo { public static void main(String[] args) { //给list添加参数 List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); System.out.println("输出所有参数字:"); eval(list, n -> true); System.out.println("\n输出能被2整除的数字:"); eval(list, n -> n%2==0); System.out.println("\n输出大于3的数字:"); eval(list, n-> n > 3 ); } //自定义方法 public static void eval(List<Integer> list, Predicate<Integer> predicate) { for(Integer n: list) { if(predicate.test(n)) { //可以将满足条件的参数返回,这里只做输出 System.out.print(n + " "); } } } }
以上的代码运行后输出的结果如下。
输出所有参数字: 1 2 3 4 5 6 7 8 9 输出能被2整除的数字: 2 4 6 8 输出大于3的数字: 4 5 6 7 8 9
大家知道了java8中Predicate<T>函数式方法的好处了吧,一个方法多种使用!