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);
}
}
}
分享到:
相关推荐
从Predicate接口的源码可以发现,Java 8新增了接口的默认(default)方法和静态(static)方法。在Java 8以前,接口里的方法要求全部是抽象方法。但是静态(static)方法只能通过接口名调用,不可以通过实现类的类名或者...
在Java中,`java.util.function.Predicate`接口定义了一个无参的`test()`方法,该方法接受一个对象并返回一个布尔值。通过这个接口,我们可以创建匿名内部类或者使用Lambda表达式来定义谓词。 例如,如果我们有一个...
Predicate接口表示一个接收一个参数并返回布尔值的断言。它的主要方法是`test(T t)`,用于判断给定的输入是否满足某种条件。Predicate在过滤、验证等场景中非常常见。例如: ```java Predicate<String> ...
Predicate 接口是 Java 中的一个函数式接口,用于条件判断。该接口包含一个抽象方法 `test`,用于条件判断。Predicate 接口可以用于过滤数据,例如从集合中筛选出符合某些条件的元素。 Predicate 接口的使用场景...
Predicate接口代表一个接收一个参数并返回一个boolean值的函数,用于条件判断。 此外,Java 8还引入了Stream API,它提供了一种处理集合数据的新方式,支持函数式编程的链式操作。Stream API支持过滤、映射、聚合等...
在Java中,`java.util.function.Predicate`接口就是谓词的实现。 在标题提到的“Predicate”主题中,我们可以深入探讨以下几个方面: 1. **谓词的基本用法** 谓词通常用作`test()`方法,接收一个对象作为参数,并...
常见的函数式接口有`java.util.function`包下的`Predicate`, `Function`, `Consumer`等。 - 函数式接口可以用于Lambda表达式,使得代码更加简洁,如在集合操作和流API中。 8. **接口与回调** - 接口常用于实现回...
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 ...
Predicate 接口是一个函数式接口,它只有一个抽象方法 test()。Predicate 接口可以被 Lambda 表达式实例化,允许开发者编写简洁的断言代码。 三、方法引用和构造器 方法引用和构造器是 Java 8 中引入的两个新特性...
PredicateTest展示了如何使用Predicate接口进行条件过滤。 Test1介绍了函数式接口的三种实例化方式Lambda表达式、方法引用和构造器引用。 Optional类 OptionalTest1展示了如何使用Optional
例如,`java.util.function`包提供了许多预定义的函数式接口,如`Predicate`(断言)、`Function`(函数转换)和`Consumer`(消费操作)等,可以用于简化和优化代码。 总结来说,这个案例可能涵盖以下知识点: 1. 树数据...
Predicate接口代表一个接收一个参数并返回一个布尔值的函数。在Java 8中,Predicate接口常用于过滤数据。题目中的练习一展示了如何使用lambda表达式创建Predicate对象并进行组合以满足不同的条件: 1. `Predicate...
在本教程中,我们将探讨两个重要的Java主题:动态代理和Java 8的新特性,特别是函数式接口的介绍。 首先,让我们深入了解Java中的动态代理。动态代理是一种在运行时创建代理类和实例的技术,它允许我们在不修改原...
在Java 8中,`java.util.function`包下引入了一系列新的函数式接口,如`Predicate<T>`、`Consumer<T>`和`Function, R>`。这些接口极大地丰富了开发者处理数据的方式。 1. `Predicate<T>`:此接口定义了一个`test(T ...
`Predicate`(断言型接口),接受一个参数并返回一个布尔值;`Supplier`(供应型接口),无参数,返回一个值。 以 `Comparator` 接口为例,我们可以自定义一个排序器,如按年龄降序排列 `Employee` 对象。在 Java 8...
- **Predicate**:接受一个对象并返回一个布尔值,如 `Predicate<String> isLongEnough = s -> s.length() > 10;` 6. **函数式接口作为方法的参数和返回值**:例如,`Comparator`接口可用于排序,`Comparator....
JDK1.8【函数式接口】【定义与使用】【源码】 ... * 函数式接口(类的定义与适应形式,只是一...断言型 Predicate<T> return:boolean * * 参数使用形式 * 形式1:传递函数式接口对象 * 形式2:形参上直接写表达式
本文主要涉及Java 8中的两个核心接口:`Predicate`和`Function`,它们都是函数式接口,属于Java的Stream API的一部分。我们来详细解析这两个接口以及如何使用它们。 1. `Predicate<T>`接口: `Predicate<T>`接口...
在这个过程中,`ICommand`接口扮演了至关重要的角色。本文将深入探讨`ICommand`接口的实现及其在UI响应中的应用。 `ICommand`是WPF和.NET Framework中的一种基础接口,它定义了命令行为的基本结构。该接口提供了两...
Filter 方法接受一个 Predicate 接口作为参数,Predicate 接口是一个函数式接口,它只有一个抽象方法:test。test 方法接受一个参数,并返回一个布尔值,表示是否满足条件。 在我们的示例中,我们使用了 lambda ...