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

常用的函数式接口_Predicate接口和常用的函数式借楼_Predicate_默认方法and的更多相关文章

  1. 常用的函数式接口_Prodicate接口_默认方法or&negate和常用的函数式接口_Predicate接口练习_集合信息筛选

    常用的函数式接口_Prodicate接口_默认方法or&negate OR package com.yang.Test.PredicateStudy; import java.util.fun ...

  2. 常用的函数式接口_Predicate接口_默认方法and和Predicate接口练习_集合接口筛选

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

  3. Java 8 访问接口的默认方法

    Java 8 API提供了很多全新的函数式接口来让工作更加方便,有一些接口是来自Google Guava库里的,即便你对这些很熟悉了,还是有必要看看这些是如何扩展到lambda上使用的. 一.Opti ...

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

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

  5. Java中的集合(二)单列集合顶层接口------Collection接口

    Java中的集合(二)单列集合顶层接口------Collection接口 Collection是一个高度封装的集合接口,继承自Iterable接口,它提供了所有集合要实现的默认方法.由于Iterab ...

  6. Java常用函数式接口--Consumer接口andThen()方法使用案例(二)

    Java常用函数式接口--Consumer接口使用案例

  7. Java常用函数式接口--Predicate接口使用案例

    Java常用函数式接口--Predicate接口使用案例 该方法可以使用and来优化: 调用:

  8. 常用的函数式接口Function接口和常用的函数式接口Function接口默认方法andThen

    常用的函数式接口Function接口 package com.yang.Test.FunctionStudy; import java.util.function.Function; /** * ja ...

  9. 常用的函数式接口_Consumer接口和常用的函数式接口_Consumer接口的默认方法andThen

    Consumer接口 java,util.function.Consumer接口则正好与Supplier接口相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定 抽象方法:accept C ...

随机推荐

  1. linux下的mysql数据库以及mysql主从复制

    参考博客 1.mysql数据库的安装 centos7如何安装mysql 1.yum安装 1.1首先配置yum源,然后再用yum进行安装 2. 源代码编译安装 3.rpm包安装 yum安装的前提条件,是 ...

  2. 找到占用CPU最高的Java线程

    一.找到java进程id jps查看当前运行的java进程id [root@localhost ~]# jps 18354 Jps 9381 Bootstrap 二.找到内存和CPU占用最高的线程pi ...

  3. “摆地摊“都找不到全栈工程师?JNPF帮你分分钟搞定!

    大街上捕捉野生程序员 都这样了还找不到全栈工程师 全栈工程师(Full-Stack Engineer)图鉴: 全栈工程师,也叫全端工程师(同时具备前端和后台能力),英文Full Stack  deve ...

  4. 【Github】 Github访问不是私密连接问题

    前言 GitHub是一个软件项目的托管平台,是我们经常需要访问的,我原本在学校时候虽然网速比较慢,但是还以能够满足一些代码下载和上传的,在暑假回到家,再去访问的时候就出现了不能访问的问题. 问题描述 ...

  5. WIN32 API 获取文件版本信息

    CString strVersion; CString strPath(_T("xxxxxxxx.exe")); // 读文件信息 DWORD dwVerHnd = 0; DWOR ...

  6. kruskal 及其应用

    kruskal 最小生成树 kruskal 是一种常见且好理解的最小生成树(MST)算法. 前置知识 并查集和路径压缩 生成树 在有 n 的顶点的无向图中,取其中 n-1 条边相连,所得到的树即为生成 ...

  7. 关于使用koa实现线上 https服务

    var https=require("https");//https服务var fs= require("fs");var Koa = require('koa ...

  8. ASP.NET MVC之models_list传值view

    单个用户在查看个人信息时,一个model就能解决 但是如果是管理员,就需要查看多个用户,此时我们从数据库读一页的用户数据(大致十条) 此时返回的就可能是一个泛型列表 所以除了基本的用户model外(比 ...

  9. ansible部署java及数据库环境

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.rpm wget https://artif ...

  10. RPA应用场景-定点取数

    场景概述定点取数 所涉系统名称业务系统,Excel 人工操作(时间/次) 8 小时 所涉人工数量 2 操作频率实时 场景流程 1.从业务系统中拉取指定字段值的数据填入Excel: 2.将Excel每隔 ...