有时候需要对某种类型的数据进行判断,从而得到一个boolean值结果,这是可以使用java,utifunctioPredicate
作用:
对某种数据类型的数据进行判断,返回一个boolean值
抽象方法:
booleantest(Tt):符合条件,返回true
public class Demo {
public static void main(String[] args) {
String s='abcdse';
System.out.println(checkString(s,(m)->m.length()>5));
}
public static boolean checkString(String s, Predicatepre) {
return pre.test(s);
}
}
默认方法:
将两个Predicate条件用“与”逻辑连接起来实现“并且”的效果时,可以使用default方法and
例:有两个条件:长度>5并且包含a
未使用and
public class Demo {
public static void main(String[] args) {
String s='abcdse';
System.out.println(checkString(s,(m)->m.length()>5,(a)->a.contains('a')));
}
public static boolean checkString(String s, Predicatepre1,Predicatepre2) {
return pre1.test(s)&&pre2.test(s);
}
}
使用and
public class Demo {
public static void main(String[] args) {
String s='abcdse';
System.out.println(checkString(s,(m)->m.length()>5,(a)->a.contains('a')));
}
public static boolean checkString(String s, Predicatepre1,Predicatepre2) {
return pre1.and(pre2).test(s);
}
}
与and类似,默认方法or实现逻辑关系中的或
public class Demo {
public static void main(String[] args) {
String s='abcdse';
System.out.println(checkString(s,(m)->m.length()>5,(a)->a.contains('a')));
}
public static boolean checkString(String s, Predicatepre1,Predicatepre2) {
return pre1.or(pre2).test(s);
}
}
取反
public class Demo {
public static void main(String[] args) {
String s='abcdse';
System.out.println(checkString(s,(m)->m.length()>5,(a)->a.contains('a')));
}
public static boolean checkString(String s, Predicatepre1,Predicatepre2) {
return pre1.or(pre2).test(s);
}
}
习题:集合信息筛选
数组中有“姓名+性别”的信息,筛选条件:女名字两字
public class Demo {
public static void main(String[] args) {
String[]arr={'张三,男','王恰为,女','李四,女'};
ArrayListalist=fliter(arr,(m)->m.split(',')[0].length()==2,(m)->m.split(',')[1].equals('女'));
for(String s:alist){
System.out.println(s);
}
}
public static ArrayListfliter(String[]s, Predicatepre1,Predicatepre2) {
ArrayListlist=new ArrayList<>();
for(String m:s){
if(pre1.and(pre2).test(m)){
list.add(m);
}
}
return list;
}
}
文章为作者独立观点,不代表股票自动交易程序化数据接口观点