package com.yang.Test.PredicateStudy;

import java.util.function.Predicate;

/**
* java.util.function.Predicate<T>接口
* 作用:对某种数据类型的数据进行判断,结果返回一个boolean值
*
* Predicate接口中包含一个抽象方法:
* boolean test(T t):用来对指定数据类型数据进行判断的方法
* 结果:
* 符合条件,返回true
* 不符合条件,返回false
*/
public class PredicateStudy01 {
/**
* 定义一个方法
* 参数传递一个String类型的字符串
* 传递一个Predicate接口,泛型使用String
* 使用Predicate中的方法test对字符串进行判断,并把判断的结果返回
*/
public static boolean checkString(String s, Predicate<String> predicate) {
boolean test = predicate.test(s);
return test;
} public static void main(String[] args) {
//定义一个字符串
String s = "abcdef"; //调用checkString方法对字符串进行校验,参数传递字符串和Lambda表达式
boolean b = checkString(s, str -> {
//对参数传递字符串进行判断,判断字符串的长度是否大于5,,并把判断的结果返回
return str.length() > 5;
});
System.out.println(b);
}
}

常用的函数式借楼_Predicate_默认方法and

package com.yang.Test.PredicateStudy;

import java.util.function.Predicate;

/**
* 逻辑表达式:可以连接多个判断的条件
* &&:与运算符,有false则false
* ||:或运算符,有true则true
* !:非(取反)运算符,非真则假,非假则真
*
* 需求:判断一个字符串,有两个判断条件
* 1.判断字符串的长度是否大于5
* 2.判断字符串中是否包含a
* 两个条件必须同时满足,我们就可以使用&&运算符链接两个条件
*
* Predicate接口中有一个方法and,表示并且关系,也可以用于连续两个判断条件
* default Predicate<T> and(Predicate<? super T> other){
* Objects.requireNonNull(other);
* return (t) -> this.test(t) && other.test(t);
* }
* 方法内部两个判断条件,也是使用&&连接起来的
*/
public class PredicateAndStudy {
/**
* 定义一个方法,方法的参数,传递一个字符串
* 传递两个Predicate接口
* 一个用于判断字符串的长度是否大于5
* 一个用于判断字符串中是否包含a
* 两个条件必须同时满足
*/
public static boolean checkString(String s, Predicate<String> pre1, Predicate<String> pre2) {
//return pre1.test(s) && pre2.test(s);
return pre1.and(pre2).test(s);
} public static void main(String[] args) {
//定义一个字符串
String s = "abcdef";
//调用checkString方法,参数列表传递字符串和两个Predicate接口
boolean b = checkString(s, message -> {
return message.length() > 5;
}, message -> {
return message.contains("a");
});
System.out.println(b); }
}

最新文章

  1. javascript事件监听与事件委托
  2. jS事件之网站常用效果汇总
  3. JAVA 设计模式 状态模式
  4. 将Log4net的配置配置到的独立文件中
  5. Windows Azure 生成证书
  6. 【原则】常用windows开发 客户端工具 收集
  7. oc-03-OC访问OC源文件、C源文件中的函数
  8. Java学习笔记--StringTokenizer的使用
  9. Java集合框架之三:HashMap源码解析
  10. 百度地图、高德地图、Google地图等坐标系相关梳理
  11. iptables snat和dnat
  12. 芝麻HTTP:redis-py的安装
  13. 使用Newtonsoft将DataTable转Json
  14. python中的函数对象的内存地址是多少
  15. HTML5的 input:file上传 以及 类型控制
  16. Ubuntu 12.04不能在華碩F81se系列電腦上安裝解决辦法
  17. (转).net面试题(老赵)
  18. WEB返回顶部效果
  19. RFID:ISO14443、15693、18000体系分析
  20. 在Textbox中按回车键后继续获取焦点

热门文章

  1. Linux 设置开机自启动脚本(ES、MySQL、Nacos、Nginx)
  2. java高级用法之:JNA中的回调
  3. wsgiref模块、web框架、django框架简介
  4. Java泛型类型擦除问题
  5. 前端CSS3布局display:flex用法
  6. 架构师必备:HBase行键设计与应用
  7. VSCode进一步深入了解学习
  8. Docker容器Nginx负载均衡配置、check及stub模块安装
  9. 开发工具-Redis Desktop Manager下载地址
  10. 使用PowerShell下载文件