百木园-与人分享,
就是让自己快乐。

常用的函数式接口之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;
  }
}

 


来源:https://www.cnblogs.com/CYan521/p/16263116.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 常用的函数式接口之Predicate接口

相关推荐

  • 暂无文章