常用的函数式接口_Predicate接口_默认方法ornegate
默认方法: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相关推荐
- Java 8——接口中个的默认方法和静态方法
在Java SE 8之前,interface只是事物的抽象,用来定义统一的抽象事物和描述事物的抽象行为和属性. 但是在Java SE 8中,增加了可以在interface中增加默认实现的行为和事物的静 ...
- Java接口、implements关键字、接口中抽象方法,默认方法,静态方法,私有方法,常量、final关键字
接口: 接口是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量.构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JD ...
- java8 默认方法_默认方法:Java 8的无名英雄
java8 默认方法 几周前,我写了一个博客,说开发人员学习新语言是因为它们很酷. 我仍然坚持这个主张,因为关于Java 8的事情真的很酷. 尽管毫无疑问,该节目的明星是添加了Lambdas和将函数提 ...
- gdb 扩展 默认参数_默认方法一种扩展旧代码的方法
gdb 扩展 默认参数 如您所知,Java的新版本已于2014年3月18日发布,我将介绍一系列文章来演示其新功能,也许在某些方面,我将谈论我的想法和批评. 我认为重要的第一个功能是"默认方法 ...
- 常用的函数式接口_Predicate接口_默认方法and
默认方法:and 既然是条件判断,就会存在与.或.非三种常见的逻辑关系.其中将两个Predicate 条件使用"与"逻辑连接起来实现"并且"的效果时,可以使用d ...
- 常用的函数式接口_Function接口_默认方法andThen
默认方法:andThen Function 接口中有一个默认的andThen 方法,用来进行组合操作.JDK源代码如: default <V> Function<T, V> a ...
- java8接口写静态方法_Java 8接口更改–静态方法,默认方法
java8接口写静态方法 Java 8 interface changes include static methods and default methods in interfaces. Prio ...
- 注解默认继承_默认方法和多重继承
注解默认继承 最近卢卡斯JOOQ埃德尔发布和文章有关嵌套类及其使用. 这是一个有趣的话题,他的文章一如既往地有趣并且值得一读. 只有一个简短的声明我无法同意,我们有一个简短的回复链,导致了默认方法,以 ...
- 常用的函数式接口_Predicate接口练习_集合信息筛选
练习:集合信息筛选 题目 数组当中有多条"姓名+性别"的信息如下,请通过Predicate 接口的拼装将符合要求的字符串筛选到集合ArrayList 中,需要同时满足两个条件: 1 ...
最新文章
- flask-WTF和sqlalchemy结合使用并实现管理员表和用户表之间的关联关系(结合前端页面实现管理员和用户选择登录)
- 使用PlanAhead查看Virtex-7系列FPGA的底层架构
- Android 布局跟着NAVIGATION_BAR 重新布局
- 日积月累-从细节做起
- html select 可输入 可编辑
- php网站分区,PHP - Manual: 分区和分片 (官方文档)
- dubbo官方文档_狂神说SpringBoot17:Dubbo和Zookeeper集成
- 基于SMB文件共享传播的新型蠕虫病毒***的紧急防范
- [Go] 函数/方法 的 变参
- 几行代码实现鼠标自动点击电脑屏幕指定位置,防止电脑或远程桌面休眠
- H3C交换机常用配置命令大全
- python实现键盘自动输入
- 在线遥感影像与地图集数据下载搜集
- [不变初心数(15分] 用数组存储不变的数最后对照即可
- 微软edge如何退出登录_Microsoft Edge:评论
- 马云谈年轻人压力大:年轻人怕压力就白活了
- JeecgBoot 3.2.0 版本发布,基于代码生成器的企业级低代码平台
- 2021年二级c语言采用的版本是,2021年二级c语言笔试必背-20210416065706.doc-原创力文档...
- LaTeX--5--一个文档的基本结构/导言区/标题_作者_日期
- 常年不卷,按时下班,工作能力强,同事求助知无不言,不扯皮,不拉帮结派,这样的职场清流竟然被裁掉了!...