`
ZoopNin
  • 浏览: 2251 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

Predicate接口介绍

阅读更多

1、Predicate是Commons Collections中定义的一个接口。具体

org.apache.commons.collections.Predicate;

 

该接口的源代码如下:

package org.apache.commons.collections;

/**
 * Defines a functor interface implemented by classes that perform a predicate
 * test on an object.
 * <p>
 * A <code>Predicate</code> is the object equivalent of an <code>if</code> statement.
 * It uses the input object to return a true or false value, and is often used in
 * validation or filtering.
 * <p>
 * Standard implementations of common predicates are provided by
 * {@link PredicateUtils}. These include true, false, instanceof, equals, and,
 * or, not, method invokation and null testing.
 * 
 * @since Commons Collections 1.0
 * @version $Revision: 646777 $ $Date: 2008-04-10 13:33:15 +0100 (Thu, 10 Apr 2008) $
 * 
 * @author James Strachan
 * @author Stephen Colebourne
 */
public interface Predicate {

    /**
     * Use the specified parameter to perform a test that returns true or false.
     *
     * @param object  the object to evaluate, should not be changed
     * @return true or false
     * @throws ClassCastException (runtime) if the input is the wrong class
     * @throws IllegalArgumentException (runtime) if the input is invalid
     * @throws FunctorException (runtime) if the predicate encounters a problem
     */
    public boolean evaluate(Object object);

}

 

2、Predicate接口用来检验某个对象是否满足某个条件。它只是提供简单而明确定义的函数功能而已。Commons Collections也提供了一组定义好的Predicate类供我们使用,这些类都放在:

package org.apache.commons.collections.functors;

 

3、自定义Predicate只需要实现Predicate接口,帮助我们处理额外的业务逻辑。如AndPredicate处理两个Predicate,只有当两者都返回true它才返回true,AnyPredicate处理多个Predicate。当其中一个满足就返回true。等等举例说明:

import java.util.Collection;

import org.apache.commons.collections.Predicate;
/**
 * @author zoopnin
 * 
 * 功能:判读集合中是否存在指定的对象 
 * 
 * 
 */
public class ContainsPredicate implements Predicate {

	private final Collection<?> objs;

	public ContainsPredicate(Collection<?> objs) {
		super();
		this.objs = objs;
	}

	public boolean evaluate(Object object) {
		if (object instanceof Collection<?>) {
			return objs.containsAll((Collection<?>) object);
		} else {
			return objs.contains(object);
		}
	}

}

 

 

 

分享到:
评论

相关推荐

    Java Predicate及Consumer接口函数代码实现解析

    从Predicate接口的源码可以发现,Java 8新增了接口的默认(default)方法和静态(static)方法。在Java 8以前,接口里的方法要求全部是抽象方法。但是静态(static)方法只能通过接口名调用,不可以通过实现类的类名或者...

    Predicate使用方法

    在Java中,`java.util.function.Predicate`接口定义了一个无参的`test()`方法,该方法接受一个对象并返回一个布尔值。通过这个接口,我们可以创建匿名内部类或者使用Lambda表达式来定义谓词。 例如,如果我们有一个...

    Java 8 的 Consumer、Supplier、Predicate和Function理解

    Predicate接口表示一个接收一个参数并返回布尔值的断言。它的主要方法是`test(T t)`,用于判断给定的输入是否满足某种条件。Predicate在过滤、验证等场景中非常常见。例如: ```java Predicate&lt;String&gt; ...

    Java基础知识-day13【Stream流】.pdf

    Predicate 接口是 Java 中的一个函数式接口,用于条件判断。该接口包含一个抽象方法 `test`,用于条件判断。Predicate 接口可以用于过滤数据,例如从集合中筛选出符合某些条件的元素。 Predicate 接口的使用场景...

    672.670.JAVA基础教程_动态代理与Java8新特性-Java内置的函数式接口介绍(672).rar

    Predicate接口代表一个接收一个参数并返回一个boolean值的函数,用于条件判断。 此外,Java 8还引入了Stream API,它提供了一种处理集合数据的新方式,支持函数式编程的链式操作。Stream API支持过滤、映射、聚合等...

    Predicate

    在Java中,`java.util.function.Predicate`接口就是谓词的实现。 在标题提到的“Predicate”主题中,我们可以深入探讨以下几个方面: 1. **谓词的基本用法** 谓词通常用作`test()`方法,接收一个对象作为参数,并...

    java接口的不同使用

    常见的函数式接口有`java.util.function`包下的`Predicate`, `Function`, `Consumer`等。 - 函数式接口可以用于Lambda表达式,使得代码更加简洁,如在集合操作和流API中。 8. **接口与回调** - 接口常用于实现回...

    Java8 新特性之lamdba表达式和Optional

    1.1.8 Predicate接口 9 1.3 方法引用和构造器 12 1.2.1 方法引用 12 1.2.2 构造器 12 1.4 Stream语法 13 1.3.1 入门案例 13 1.3.2 怎么得到Stream 15 1.3.3 转换Stream 16 1.3.4 汇聚Stream 19 2 Optional类 20 2.1 ...

    Java8新特性之Lambda表达式和Optional类

    Predicate 接口是一个函数式接口,它只有一个抽象方法 test()。Predicate 接口可以被 Lambda 表达式实例化,允许开发者编写简洁的断言代码。 三、方法引用和构造器 方法引用和构造器是 Java 8 中引入的两个新特性...

    基于Java 8的函数式编程学习项目.zip

    PredicateTest展示了如何使用Predicate接口进行条件过滤。 Test1介绍了函数式接口的三种实例化方式Lambda表达式、方法引用和构造器引用。 Optional类 OptionalTest1展示了如何使用Optional

    接口+泛型+函数式编程案例

    例如,`java.util.function`包提供了许多预定义的函数式接口,如`Predicate`(断言)、`Function`(函数转换)和`Consumer`(消费操作)等,可以用于简化和优化代码。 总结来说,这个案例可能涵盖以下知识点: 1. 树数据...

    Stream流习题答案1

    Predicate接口代表一个接收一个参数并返回一个布尔值的函数。在Java 8中,Predicate接口常用于过滤数据。题目中的练习一展示了如何使用lambda表达式创建Predicate对象并进行组合以满足不同的条件: 1. `Predicate...

    671.669.JAVA基础教程_动态代理与Java8新特性-函数式接口的介绍(671).rar

    在本教程中,我们将探讨两个重要的Java主题:动态代理和Java 8的新特性,特别是函数式接口的介绍。 首先,让我们深入了解Java中的动态代理。动态代理是一种在运行时创建代理类和实例的技术,它允许我们在不修改原...

    Java使用函数式接口.pdf

    在Java 8中,`java.util.function`包下引入了一系列新的函数式接口,如`Predicate&lt;T&gt;`、`Consumer&lt;T&gt;`和`Function, R&gt;`。这些接口极大地丰富了开发者处理数据的方式。 1. `Predicate&lt;T&gt;`:此接口定义了一个`test(T ...

    java8-函数式接口.pdf

    `Predicate`(断言型接口),接受一个参数并返回一个布尔值;`Supplier`(供应型接口),无参数,返回一个值。 以 `Comparator` 接口为例,我们可以自定义一个排序器,如按年龄降序排列 `Employee` 对象。在 Java 8...

    day12【函数式接口】教案1

    - **Predicate**:接受一个对象并返回一个布尔值,如 `Predicate&lt;String&gt; isLongEnough = s -&gt; s.length() &gt; 10;` 6. **函数式接口作为方法的参数和返回值**:例如,`Comparator`接口可用于排序,`Comparator....

    JDK1.8【函数式接口】【定义与使用】【源码】

    JDK1.8【函数式接口】【定义与使用】【源码】 ... * 函数式接口(类的定义与适应形式,只是一...断言型 Predicate&lt;T&gt; return:boolean * * 参数使用形式 * 形式1:传递函数式接口对象 * 形式2:形参上直接写表达式

    day13_Stream流_每日作业卷-答案2

    本文主要涉及Java 8中的两个核心接口:`Predicate`和`Function`,它们都是函数式接口,属于Java的Stream API的一部分。我们来详细解析这两个接口以及如何使用它们。 1. `Predicate&lt;T&gt;`接口: `Predicate&lt;T&gt;`接口...

    ICommand接口的实现及应用初探

    在这个过程中,`ICommand`接口扮演了至关重要的角色。本文将深入探讨`ICommand`接口的实现及其在UI响应中的应用。 `ICommand`是WPF和.NET Framework中的一种基础接口,它定义了命令行为的基本结构。该接口提供了两...

    Stream的Filter与谓词逻辑.pdf

    Filter 方法接受一个 Predicate 接口作为参数,Predicate 接口是一个函数式接口,它只有一个抽象方法:test。test 方法接受一个参数,并返回一个布尔值,表示是否满足条件。 在我们的示例中,我们使用了 lambda ...

Global site tag (gtag.js) - Google Analytics