相关疑难解决方法(0)

是否有一种方便的方法来创建一个测试字段是否等于给定值的谓词?

我经常发现自己需要过滤Stream或使用谓词来检查给定字段是否具有给定值.

比方说我有这个POJO:

public class A {
    private Integer field;

    public A(final Integer field) {
        this.field = field;
    }

    public Integer getField() {
        return field;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想Stream根据以下值来过滤一个对象field:

    final Integer someValue = 42;
    Stream.of(new A(42), new A(1729), new A(42), new A(87539319), new A(null))
            .filter(a -> Objects.equals(a.getField(), someValue))
            ...
Run Code Online (Sandbox Code Playgroud)

是否有方便的方法来生成方法的谓词filter?我注意到Predicate.isEqual它有但不适合需要.

我可以很容易地写一个这样的:

public static <T,R> Predicate<T> isEqual(Function<? super T, ? extends R> f, R value) {
    return v -> Objects.equals(value, f.apply(v));
}
Run Code Online (Sandbox Code Playgroud)

并将其用作: …

java functional-programming predicate java-8

15
推荐指数
1
解决办法
6052
查看次数

标签 统计

functional-programming ×1

java ×1

java-8 ×1

predicate ×1