Predicate使用详解

编程教程 > Java (5932) 2024-11-26 14:39:04

是什么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,"xqlee"),
                new Person(23,"wangwu"),
                new Person(24,"wangwu"),
                new Person(25,"xqlee"),
                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或者名字为xqlee的人数量

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

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

评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
是什么Predicatejava8,java.util.function中 Function, Supplier, Consumer, Predicate和其他函数式接口广泛用在支持lambda...
Consumer 源码package java.util.function; import java.util.Objects; @FunctionalInterface public i...
java8 Function 应用场景 --代码重构旧代码: import org.springframework.beans.BeanUtils; import java.util.func...
Java EE 8 JSON Pointer讲解,Java EE 8包含JSON处理API的更新,并为最新的JSON标准提供最新的IEFT标准。
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()方法。比较器之间返回一个...
JDK8 从某年某月开始变成个人免费,商用收费了,以至于网上经常搜索到最后一个免费版是jdk那个版本。下面通过Oracle 官方文档来看最后的免费午餐版本是 J
Supplier详解源码分析:package java.util.function; @FunctionalInterface public interface Supplier&lt;T&...
本文主要讲解通过使用 Stream.concat() 方法 去合并两个stream,新的stream由原来的两个stream所有元素组成(相同元素会覆盖)
引言如今,很多应用程序仍然使用API java.util.Date和java.util.CalendarAPI,包括库来使我们的生活更轻松地处理这些类型,例如J
首先定义一个包含字符串日期的数据对象​public class ObjectDto implements Serializable { private static final long...