1、闭包:能够读取其他函数内部变量的函数。
2、函数式接口:有且仅有一个抽象方法,但可以拥有多个实现方法(静态方法、默认方法)的接口。
Predicate<T> 接口 它接受一个输入参数T,返回参数布尔值结果。
案例:

package com.atsico.function.pg01;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

/**
* @Description
* @Author zhangwl
* @Date 2019/9/24 9:01
*/
public class PredicateFunctionDemo {

public static void main(String[] args) {
List<Integer> intList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
foreachList(intList, n -> n >= 5);
}

public static void foreachList(List<Integer> intList, Predicate<Integer> predicate) {
List<Integer> newIntList = new LinkedList<>();
intList.stream().forEach(o -> {
/*判断值是否存在*/
if (predicate.test(o)) {
newIntList.add(o);
}
});
System.out.println("集合:" + newIntList);
}
}


and 方法演示:
package com.atsico.function.pg02;

import java.util.LinkedList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

/**
* @Description
* @Author zhangwl
* @Date 2019/9/24 10:09
*/
public class PredicateRunMain {

public static void main(String[] args) {
List<Man> manList = new LinkedList<Man>();
manList.add(new Man("Tom", 19, 175));
manList.add(new Man("July", 17, 165));
manList.add(new Man("Huahua", 21, 185));
/*&&*/
Predicate<Man> p1 = m -> m.getAge() > 20;
Predicate<Man> p2 = m -> m.getHeight() > 175;
andBoolean(manList, p1, p2);
}

public static void andBoolean(List<Man> manList, Predicate<Man> predicate1, Predicate<Man> predicate2) {
List<Man> newManList = manList.stream().filter(o -> predicate1.and(predicate2).test(o)).collect(Collectors.toList());
System.out.println(newManList);
}
}

 

posted on 2019-10-10 08:17  it_zhangwl  阅读(133)  评论(0编辑  收藏  举报