8

我正在使用 guava 库并注意到没有定义一个非常有用的谓词- “大于”。是否还有其他地方我应该寻找这样的基本谓词,或者我注定要创建自己的功能支持 jar,其中包含此类内容,并将其导入我的所有项目中?他们是否有理由不包括这个,但会花时间做一堆其他谓词(在谓词类中)?

4

4 回答 4

15

RangeRanges(更新:从 Guava 14.0 开始,静态方法Ranges已被折叠Range)现在已为 r10 添加。你将能够做到:

Iterable<Integer> positive = Iterables.filter(numbers, Range.greaterThan(0));

Ranges 具有许多其他强大的功能,包括将 aRange视为ImmutableSortedSet离散域上的连续的能力:

ContiguousSet<Integer> oneToOneHundred = ContiguousSet.create(
    Range.closed(1, 100), DiscreteDomains.integers());

我只是Integer在这里展示了 s,但这些Range东西适用于任何Comparable. ContiguousSet需要一个DiscreteDomain类型... Guava 提供DiscreteDomain.integers(),.longs()并且.bigIntegers()目前。

于 2011-04-23T16:09:59.470 回答
7

借助Predicate接口和各种实用方法来使用 Predicate 过滤集合,Guava 提供了一个可以构建的核心。

该类Predicates允许您创建一些常用谓词。我想您可以按照 Mike 的建议请求在问题跟踪器中进行增强,但我不确定他们是否会添加它,因为 Guava 力求实现高功率重量比。

如果他们要添加“greaterThan”谓词,他们还需要添加“greaterOrEqualThan”、“lesserThan”、“lesserOrEqualThan”......这会很有用,但对于一个谓词来说,这是很多“API 膨胀”只需一行即可实现。不过值得一试。

更好的解决方案可能是拥有一个开源项目,该项目使用 Guava 中不可用的所有“不错的”功能扩展 Guava。我们可以称它为“guava-leftovers”之类的东西;)或者也许要求Biscotti项目添加这样的实用方法(它们已经有一些 Guava 中没有的“不错的”功能)。

于 2011-04-02T20:25:36.970 回答
7

我以前曾请求过此功能并被提及此问题。显然,此功能将通过 Ranges 实现,它将实现Predicate.

于 2011-04-05T06:58:57.583 回答
1

Predicates收集一些常见的谓词,但不大于一个。我不认为番石榴提供了这样的东西。您可以尝试在 guava 项目站点提交错误/功能请求:http ://code.google.com/p/guava-libraries/issues/list

于 2011-04-02T17:22:57.917 回答