默认方法:or

与and 的“与”类似,默认方法or 实现逻辑关系中的“或”。JDK源码为:

default Predicate<T> or(Predicate<? super T> other) {Objects.requireNonNull(other);return (t) ‐> test(t) || other.test(t);
}
package com.learn.demo06.Predicate;import java.util.function.Predicate;/*需求:判断一个字符串,有两个判断的条件1.判断字符串的长度是否大于52.判断字符串中是否包含a满足一个条件即可,我们就可以使用||运算符连接两个条件Predicate接口中有一个方法or,表示或者关系,也可以用于连接两个判断条件default Predicate<T> or(Predicate<? super T> other) {Objects.requireNonNull(other);return (t) -> test(t) || other.test(t);}方法内部的两个判断条件,也是使用||运算符连接起来的*/
public class Demo03Predicate_or {/*定义一个方法,方法的参数,传递一个字符串传递两个Predicate接口一个用于判断字符串的长度是否大于5一个用于判断字符串中是否包含a满足一个条件即可*/public static boolean checkString(String s, Predicate<String> pre1, Predicate<String> pre2){//return pre1.test(s) || pre2.test(s);return  pre1.or(pre2).test(s);//等价于return pre1.test(s) || pre2.test(s);}public static void main(String[] args) {//定义一个字符串String s = "bc";//调用checkString方法,参数传递字符串和两个Lambda表达式boolean b = checkString(s,(String str)->{//判断字符串的长度是否大于5return str.length()>5;},(String str)->{//判断字符串中是否包含areturn str.contains("a");});System.out.println(b);}
}

默认方法:negate

“与”、“或”已经了解了,剩下的“非”(取反)也会简单。默认方法negate 的JDK源代码为:

default Predicate<T> negate() {return (t) ‐> !test(t);
}

从实现中很容易看出,它是执行了test方法之后,对结果boolean值进行“!”取反而已。一定要在test 方法调用之前调用negate 方法,正如and 和or 方法一样:

package com.learn.demo06.Predicate;import java.util.function.Predicate;/*需求:判断一个字符串长度是否大于5如果字符串的长度大于5,那返回false如果字符串的长度不大于5,那么返回true所以我们可以使用取反符号!对判断的结果进行取反Predicate接口中有一个方法negate,也表示取反的意思default Predicate<T> negate() {return (t) -> !test(t);}*/
public class Demo04Predicate_negate {/*定义一个方法,方法的参数,传递一个字符串使用Predicate接口判断字符串的长度是否大于5*/public static boolean checkString(String s, Predicate<String> pre){//return !pre.test(s);return  pre.negate().test(s);//等效于return !pre.test(s);}public static void main(String[] args) {//定义一个字符串String s = "abc";//调用checkString方法,参数传递字符串和Lambda表达式boolean b = checkString(s,(String str)->{//判断字符串的长度是否大于5,并返回结果return str.length()>5;});System.out.println(b);}
}

常用的函数式接口_Predicate接口_默认方法ornegate相关推荐

  1. Java 8——接口中个的默认方法和静态方法

    在Java SE 8之前,interface只是事物的抽象,用来定义统一的抽象事物和描述事物的抽象行为和属性. 但是在Java SE 8中,增加了可以在interface中增加默认实现的行为和事物的静 ...

  2. Java接口、implements关键字、接口中抽象方法,默认方法,静态方法,私有方法,常量、final关键字

    接口: 接口是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量.构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JD ...

  3. java8 默认方法_默认方法:Java 8的无名英雄

    java8 默认方法 几周前,我写了一个博客,说开发人员学习新语言是因为它们很酷. 我仍然坚持这个主张,因为关于Java 8的事情真的很酷. 尽管毫无疑问,该节目的明星是添加了Lambdas和将函数提 ...

  4. gdb 扩展 默认参数_默认方法一种扩展旧代码的方法

    gdb 扩展 默认参数 如您所知,Java的新版本已于2014年3月18日发布,我将介绍一系列文章来演示其新功能,也许在某些方面,我将谈论我的想法和批评. 我认为重要的第一个功能是"默认方法 ...

  5. 常用的函数式接口_Predicate接口_默认方法and

    默认方法:and 既然是条件判断,就会存在与.或.非三种常见的逻辑关系.其中将两个Predicate 条件使用"与"逻辑连接起来实现"并且"的效果时,可以使用d ...

  6. 常用的函数式接口_Function接口_默认方法andThen

    默认方法:andThen Function 接口中有一个默认的andThen 方法,用来进行组合操作.JDK源代码如: default <V> Function<T, V> a ...

  7. java8接口写静态方法_Java 8接口更改–静态方法,默认方法

    java8接口写静态方法 Java 8 interface changes include static methods and default methods in interfaces. Prio ...

  8. 注解默认继承_默认方法和多重继承

    注解默认继承 最近卢卡斯JOOQ埃德尔发布和文章有关嵌套类及其使用. 这是一个有趣的话题,他的文章一如既往地有趣并且值得一读. 只有一个简短的声明我无法同意,我们有一个简短的回复链,导致了默认方法,以 ...

  9. 常用的函数式接口_Predicate接口练习_集合信息筛选

    练习:集合信息筛选 题目 数组当中有多条"姓名+性别"的信息如下,请通过Predicate 接口的拼装将符合要求的字符串筛选到集合ArrayList 中,需要同时满足两个条件: 1 ...

最新文章

  1. flask-WTF和sqlalchemy结合使用并实现管理员表和用户表之间的关联关系(结合前端页面实现管理员和用户选择登录)
  2. 使用PlanAhead查看Virtex-7系列FPGA的底层架构
  3. Android 布局跟着NAVIGATION_BAR 重新布局
  4. 日积月累-从细节做起
  5. html select 可输入 可编辑
  6. php网站分区,PHP - Manual: 分区和分片 (官方文档)
  7. dubbo官方文档_狂神说SpringBoot17:Dubbo和Zookeeper集成
  8. 基于SMB文件共享传播的新型蠕虫病毒***的紧急防范
  9. [Go] 函数/方法 的 变参
  10. 几行代码实现鼠标自动点击电脑屏幕指定位置,防止电脑或远程桌面休眠
  11. H3C交换机常用配置命令大全
  12. python实现键盘自动输入
  13. 在线遥感影像与地图集数据下载搜集
  14. [不变初心数(15分] 用数组存储不变的数最后对照即可
  15. 微软edge如何退出登录_Microsoft Edge:评论
  16. 马云谈年轻人压力大:年轻人怕压力就白活了
  17. JeecgBoot 3.2.0 版本发布,基于代码生成器的企业级低代码平台
  18. 2021年二级c语言采用的版本是,2021年二级c语言笔试必背-20210416065706.doc-原创力文档...
  19. LaTeX--5--一个文档的基本结构/导言区/标题_作者_日期
  20. 常年不卷,按时下班,工作能力强,同事求助知无不言,不扯皮,不拉帮结派,这样的职场清流竟然被裁掉了!...

热门文章

  1. iOS中Block的基础用法
  2. MySQL下使用Inplace和Online方式创建索引的教程
  3. 对象并不一定都是在堆上分配内存的
  4. weblogic下开发web项目时修改java文件不用重启的绿色方法,不用修改weblogic的配置文件、不用jar...
  5. tracert和traceroute使用
  6. 【项目管理】老板与客户意见冲突怎么办?
  7. php设计模式的六大原则(二):开闭原则
  8. python 点滴记录1:python没有Tkinter模块
  9. centos6 nodejs 安装测试
  10. 提高SQL执行性能方案:如何让你的SQL运行得更快