Predicate使用详解

教程分享 > Java教程 (6659) 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);
https://www.leftso.com/article/718.html

相关文章
是什么Predicatejava8,java.util.function中 Function, Supplier, Consumer, Predicate和其他函数式接口广泛用在支持lambda...
问题描述idea启动maven的JavaFX项目报错:Exception in Application start method java.lang.reflect.InvocationTarg...
本文主要讲解通过使用 Stream.concat() 方法 去合并两个stream,新的stream由原来的两个stream所有元素组成(相同元素会覆盖)
java8 Function 应用场景 --代码重构旧代码: import org.springframework.beans.BeanUtils; import java.util.func...
Consumer 源码package java.util.function; import java.util.Objects; @FunctionalInterface public i...
Java 8使用多个comparators进行集合分组排序
问题描述JavaFX maven项目在idea中启动报错:Exception in thread "WindowsNativeRunloopThread" java.lang.NoSuchMet...
java8 Function函数编程详解Function函数基础定义和使用 public static void t1(){ Function&lt;Integer,Int...
简介本博文主要讲解在Java 8中 如何通过stream流的方式去重
备受期待的Java Enterprise Edition 8发布了两个令人兴奋的新API(JSON-Binding 1.0和Java EE Security 1.0)并改进了当前的API(JAX...
Vert.x java 入门,Vert.x这个框架在常规的web业务开发中估计还不是很成熟。但是了解了他的一些原理我觉得可以有一番作为。今天主要简单讲解下eclipse Vert.x是什么有什么...
JDK8 从某年某月开始变成个人免费,商用收费了,以至于网上经常搜索到最后一个免费版是jdk那个版本。下面通过Oracle 官方文档来看最后的免费午餐版本是 J
java 8 stream 多字段排序,本例子主要使用stream进行多个字段的排序,使用了 comparators和Comparator.thenComparing()方法。比较器之间返回一个...
Ubuntu 20.04 安装jdk8sudo apt-get install openjdk-8-jdk安装完成后查看版本java -version
jdk8新特性流的使用