1.Predicate接口说明
java.util.function.PredicateT接口
作用:对某种数据类型的数据进行判断,结果返回一个boolean
Predicate接口中包含了一个抽象方法
boolean test(T t);应用该方法对某种数据类型的数据进行判断,符合条件则返回true,不符合则返回false
默认方法
(1)and();与运算,判断一个字符串中是否既含有a,又含有b;
源码:
defau< PredicateT and(Predicate? super T other) {
Objects.requireNonNull(other);
return (t) - test(t) other.test(t);
}
(2)or();或运算
源码:
defau< PredicateT or(Predicate? super T other) {
Objects.requireNonNull(other);
return (t) - test(t) || other.test(t);
}
(3)negate();取反运算
源码:
defau< PredicateT negate() {
return (t) - !test(t);
}
案例1:
/*
定义一个方法,参数传递String类型的字符串,传递一个Predicate接口,泛型使用String
使用该接口中的test方法对字符串进行判断,并将判断结果返回
*/
public static boolean checkString(String str, PredicateString pre){
return pre.test(str);
}
public static void main(String[] args) {
String str = "AA";
*//*boolean resu< = checkString(str, new PredicateString() {
@Override
public boolean test(String s) {
return s.len >h()5;
}
});*/
boolean resu< = checkString(str,s - s.len >h()5);
System.out.println(resu< );
}
案例2:
//判断一个字符串是否既含有a,长度又大于5
public static boolean method(String str, PredicateString pre1,PredicateString pre2){
//return pre1.test(str) pre2.test(str);
return pre1.and(pre2).test(str);
}
public static void main(String[] args) {
String str="axwertggwhwt";
/* boolean resu< = method(str, new PredicateString() {
@Override
public boolean test(String s) {
return str.contains("a");
}
},
new PredicateString() {
@Override
public boolean test(String s) {
return str.len >h()5;
}
});*/
boolean resu< = method(str,s-str.contains("z"),s-str.len >h()5);
System.out.println(resu< );
}
案例3:
//判断一个字符串的长度是否大于5,大于返回false,否则返回true
public static boolean method(String str, PredicateString pre){
//return !pre.test(str);
return pre.negate().test(str);
}
public static void main(String[] args) {
String str = "AA";
boolean resu< = method(str,s - s.len >h()5);
System.out.println(resu< );
}
案例4:
//判断一个字符串的姓名长度是否大于4,且性别为女,并将符合条件的字符串存入ArrayList中
public static boolean method(String strs, PredicateString pre1, PredicateString pre2){
return pre1.and(pre2).test(strs);
}
public static void main(String[] args) {
String[] arrs = {"AAAAA,男","BBBBBB,女","CC,男","DDDDDDD,女"};
ArrayListString list = new ArrayList();
for (String arr : arrs) {
boolean resu< = method(arr,s-s.split(",")[0].len >h()4,s-s.split(",")[1].equals("女"));
if(resu< ){
list.add(arr);
}
}
System.out.println(list.toString());
}