Predicate
- boolean test(T t):用来指定数据类型进行判段的方法
import java.util.function.Predicate;
/*
* java.util.function.Predicate<T>接口
* 作用:对某种数据类型的数据进行判断,返回一个boolean值
* Predicate接口中包含一个抽象方法:
* boolean test(T t):用来指定数据类型进行判段的方法
*
* */
public class Demo1 {
//判断字符串的长度
public static boolean method(String s, Predicate<String> pre){
return pre.test(s);
}
public static void main(String[] args) {
boolean result = method("abcdasdsad",(s)->s.length()>5);
System.out.println(result);
}
}
- Predicate的逻辑与的使用,或运算和取反和与一样
/*
* 逻辑表达式:可以连接多个判断的条件
* &&:与运算,有false则false
* ||:或运算,有true则true
* !: 取反
* 需求:
* 1.判断字符串的长度是否大于5
* 2.字符串是否包含a
* */
import java.util.function.Predicate;
public class Demo2 {
public static boolean method(String s, Predicate<String> pre1, Predicate<String> pre2) {
return pre1.test(s) && pre2.test(s);
}
public static void main(String[] args) {
boolean result = method("abceff",(s) -> {
return s.length()>5;
},(s)->{
return s.contains("a");
});
System.out.println(result);
}
}
- 练习
import java.util.ArrayList;
import java.util.function.Predicate;
/*
* 练习:集合信息的筛选
* 请通过Predicate接口实现
* 同时满足:
* 1. 必须是女
* 2. 姓名为4个字
*
* */
public class Demo3 {
public static ArrayList<String> filter(String[] arr, Predicate<String> pre1, Predicate<String> pre2){
ArrayList<String> list = new ArrayList<>();
for (String item:arr) {
boolean result = pre1.test(item) && pre2.test(item);
if(result)
list.add(item);
}
return list;
}
public static void main(String[] args) {
String[] arr = {"迪丽热巴,女","古力娜扎,女","马儿扎哈,男","赵丽颖,女"};
ArrayList<String> list = filter(arr,(s)->{
return s.split(",")[0].length()==4;
},(s)->{
return s.split(",")[1].equals("女");
});
System.out.println(list.toString());
}
}