常用的函数式接口之Predicate接口

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;
  }
}
 

标签: Java

添加新评论