【发布时间】:2013-10-11 17:31:35
【问题描述】:
我有一个方法应该将一个值与一个值列表进行比较。
比较函数可以小于、大于或等于。我遇到了这个Predicate 概念,我试图在这种情况下理解和实施。
以下是我的几个问题。
1) apache commons、guava 和 javax.sql 中定义了Predicate 类。他们之间有什么区别? (我尝试浏览文档但无法获取)
2) Guava 谓词是否仅用于过滤而不是布尔函数实现?
3) 我可以获取谓词的示例吗?
谢谢。
【问题讨论】:
-
假设您在完成输入之前提交了此文件,我将为您提供疑问
-
Guava 有一个
Predicate接口,但它是用来过滤的。 -
@SotiriosDelimanolis 您可以使用(C++ 风格)谓词实现比较器,假设谓词在
a < b时返回 true。例如,return less.apply(a, b) ? -1 : less.apply(b, a) ? 1 : 0; -
@ChrisJester-Young 在这种情况下,一个
Predicate是否应该返回所有较小的值,另一个返回相等的值,而另一个返回较大的值? -
@SotiriosDelimanolis 重新考虑这一点,显然你不能直接使用
Predicate,因为它是一元的,但假设有二进制版本,总是假设返回a是否小于b.您只需交换参数即可测试另一个方向。至少,这就是它在 C++ 中的惯用方式。