Predicate<T>:常用的四个方法
boolean test(T t):对给定的参数进行判断(判断逻辑由Lambda表达式实现),返回一个布尔值
default Predicate<T>negate():返回一个逻辑的否定,对应逻辑非
default Predicate<T>and(Predicate other):返回一个组合判断,对应短路与
default Predicate<T>or(Predicate other):返回一个组合判断,对应短路或
Predicate<T>接口通常用于判断参数是否满足指定的条件
test、negate方法Demo
package Demo0512;
import java.util.function.Predicate;
public class PredicateDemo {
public static void main(String[] args) {
//调用方法判断,具体判断逻辑由Lambda表达式实现
boolean b = cheakString(\"最美不过姑娘你\", s -> s.length() > 5);
System.out.println(b);
boolean b1 = cheakString(\"最美不过姑娘你\", s -> s.length() > 10);
System.out.println(b1);
}
//定义一个方法用于判断给定的字符串是否符合要求
private static boolean cheakString(String s, Predicate<String>pc){
//返回正常的结果
//return pc.test(s);
//返回相反的结果
return pc.negate().test(s);
}
}
default Predicate<T>and(Predicate other):返回一个组合判断,对应短路与
default Predicate<T>or(Predicate other):返回一个组合判断,对应短路或
Demo
package Demo0512;
import java.util.function.Predicate;
public class PredicateDemo01 {
public static void main(String[] args) {
//调用方法
boolean b = cheakString(\"最美不过姑娘你\", s -> s.length() > 5, s -> s.length() > 15);
System.out.println(b);
}
//定义一个方法,实现同一个字符串给出两个不同的判断条件,最后把这两个条件的结果进行逻辑与、逻辑或操作并作为最终结果
private static boolean cheakString(String s, Predicate<String>pc,Predicate<String>pc1){
// return pc.and(pc1).test(s);//进行逻辑与操作,一假全假
return pc.or(pc1).test(s);//进行逻辑与操作,一真为真
}
}
练习:
需求:
1.定义一个字符串数组String [] name={};
2.通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中,并遍历
3.字符串需要同时满足两个条件:姓名长度>2,年龄大于20
package Demo0512;
import java.util.ArrayList;
import java.util.function.Predicate;
public class PredicateDemo02 {
public static void main(String[] args) {
//定义一个数组
String[]strarray={\"张三疯,45\",\"李四疯,21\",\"王五,19\"};
//调用方法
ArrayList<String> array = myFilter(strarray, s -> s.split(\",\")[0].length() > 2, s -> Integer.parseInt(s.split(\",\")[1]) > 20);
//遍历数组
for (String s:array){
System.out.println(s);
}
}
//定义一个方法,通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中
private static ArrayList<String>myFilter( String[]strarray, Predicate<String>pc,Predicate<String>pc1){
//定义一个数组
ArrayList<String>array=new ArrayList<String>();
//遍历数组
for (String str:strarray){
if (pc.and(pc1).test(str)){
array.add(str);
}
}
return array;
}
}
来源:https://www.cnblogs.com/CYan521/p/16263116.html
本站部分图文来源于网络,如有侵权请联系删除。