Predicate接口
Predicate接口通常用于判断参数是否满足指定的条件
常用方法:
方法名 | 说明 |
---|---|
boolean test(T t) | 对给定的参数进行判断(判断逻辑由Lambda表达式实现),返回一个布尔值 |
default Predicate negate() | 返回一个逻辑的否定,对应逻辑非 |
default Predicate and(Predicate other) | 返回一个组合判断,对应短路与 |
default Predicate or(Predicate other) | 返回一个组合判断,对应短路或 |
练习
String[] strArray = {“小林林,12”, “小码,14”, “小云云,15”, “小心,11”, “小康,13”};
字符串数组中有多条信息,请通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中,并遍历ArrayList集合
同时满足如下要求:姓名长度大于2;年龄大于13
分析 有两个判断条件,所以需要使用两个Predicate接口,对条件进行判断 必须同时满足两个条件,所以可以使用and方法连接两个判断条件
package hanshushijiekou;
import java.util.ArrayList;
import java.util.function.Predicate;
public class PredicateDemo {
public static void main(String[] args) {
String[] strArray ={"小林林,12", "小码,14", "小云云,15", "小心,11", "小康,13"};
ArrayList<String> arrayList = Filer(strArray, s -> s.split(",")[0].length()>2,
s -> Integer.parseInt(s.split(",")[1])>13);
for(String str : arrayList){
System.out.println(str);
}
}
private static ArrayList<String> Filer(String[] strArray, Predicate<String> pre1, Predicate<String> pre2){
ArrayList<String> array = new ArrayList<String>();
for(String str : strArray) {
if (pre1.and(pre2).test(str)) {
array.add(str);
}
}
return array;
}
}