gpt4 book ai didi

java - 查找匹配谓词并使用 iterable.tryFind 从 java 列表中返回元素

转载 作者:搜寻专家 更新时间:2023-10-31 20:02:24 26 4
gpt4 key购买 nike

我有一个列表,我想要列表中的一个元素与谓词相匹配。我正在从列表中找到一个与第一个谓词匹配的元素,如果第一个谓词不返回 true,则它与第二个谓词匹配。

这是一个例子:

案例一:

result = iterable.tryFind(List, Predicates.or(predicate1, predicate2)).orNull();

这段代码的问题在于它找到了与任何这些谓词匹配的第一个元素。即使列表中的第二个元素与第一个谓词匹配,在我的情况下应该给予更高的优先级。在这种情况下,我期望这里的结果作为第二个元素,但得到第一个元素(因为它是第一个元素匹配其中一个谓词)。

案例2:

result = iterable.tryFind(List, Predicates.and(predicate1, predicate2)).orNull();

如果第一个谓词返回 false,这显然行不通。

案例三:

result = iterable.tryFind(List, predicate1).orNull();

if(result == null)
result = iterable.tryFind(List, predicate2).orNull();

这对我有用,但它看起来很乱并且违背了函数式编程的目的。

是否有任何其他方法可以从适用于我的场景的列表中获取元素?

最佳答案

你可以使用 Optional.or 而不是 Predicate.or 来得到你想要的:

result = Iterables.tryFind(list, predicate1)
.or(Iterables.tryFind(list, predicate2))
.orNull();

关于java - 查找匹配谓词并使用 iterable.tryFind 从 java 列表中返回元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23772522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com