Predicate使用详解

教程分享 > Java教程 > 博文分享 (9869) 2024-07-25 09:06:12

是什么Predicate

java8,java.util.function中 Function, Supplier, Consumer, Predicate和其他函数式接口广泛用在支持lambda表达式的API中,以此可以缩短lambda的长度和提高代码可阅读性。当然普通代码片段种用它来作为筛选条件也可以。

Predicate能做什么

Predicate能为我们做些什么事儿呢?下面以数据赛选为例。

 List<Person> personList= Stream.of(
                new Person(21,"zhangsan"),
                new Person(22,"leftso"),
                new Person(23,"wangwu"),
                new Person(24,"wangwu"),
                new Person(25,"leftso"),
                new Person(26,"zhangsan")
        ).collect(Collectors.toList());

需求1:统计年龄大于22的人数量

代码实现:

        Predicate<Person> personPredicate = x -> x.getAge() > 22;
        Long count=personList.stream().filter(personPredicate).count();
        System.out.println(count);

简述:第一步编写过滤条件personPredicate,第二部带入stream中进行过滤。

需求2:统计年龄大于22或者名字为leftso的人数量

咋一看这是个“或”关系的赛选,代码实现为:

       Predicate<Person> personPredicate = x -> x.getAge() > 22;
       personPredicate.or(x->"leftso".equals(x.getName()));
       long count=personList.stream().filter(personPredicate).count();
        System.out.println(count);

相关文章
是什么Predicatejava8,java.util.function中 Function, Supplier, Consumer, Predicate和其他函数式接口广泛用在支持lambda...
Consumer 源码package java.util.function; import java.util.Objects; @FunctionalInterface public i...
Java EE 8 JSON Pointer讲解,Java EE 8包含JSON处理API的更新,并为最新的JSON标准提供最新的IEFT标准。
java8 Function 应用场景 --代码重构旧代码: import org.springframework.beans.BeanUtils; import java.util.func...
Java 8使用多个comparators进行集合分组排序
java8 Function函数编程详解Function函数基础定义和使用 public static void t1(){ Function&lt;Integer,Int...
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel注意必须安装java-1.8.0-openjdk-devel,否则没有javac命令
备受期待的Java Enterprise Edition 8发布了两个令人兴奋的新API(JSON-Binding 1.0和Java EE Security 1.0)并改进了当前的API(JAX...
简介本博文主要讲解在Java 8中 如何通过stream流的方式去重
java 8 stream 多字段排序,本例子主要使用stream进行多个字段的排序,使用了 comparators和Comparator.thenComparing()方法。比较器之间返回一个...
如今,很多应用程序仍然使用API java.util.Date和java.util.CalendarAPI,包括库来使我们的生活更轻松地处理这些类型,例如JodaTime。然而,Java 8引入...
JDK8 从某年某月开始变成个人免费,商用收费了,以至于网上经常搜索到最后一个免费版是jdk那个版本。下面通过Oracle 官方文档来看最后的免费午餐版本是 J
问题描述idea启动maven的JavaFX项目报错:Exception in Application start method java.lang.reflect.InvocationTarg...
Supplier详解源码分析:package java.util.function; @FunctionalInterface public interface Supplier&lt;T&...
本文主要讲解通过使用 Stream.concat() 方法 去合并两个stream,新的stream由原来的两个stream所有元素组成(相同元素会覆盖)