8

私は guava ライブラリを使用していますが、非常に便利なPredicateが定義されていないことに気付きました - 「より大きい」。このような基本的な述語を探す必要がある別の場所はありますか?それとも、このようなものを含む独自の機能サポート jar を作成し、それをすべてのプロジェクトにインポートする運命にありますか? 彼らがこれを含めない理由はありますが、他の多くの述語を実行するのに時間がかかります(述語クラスで)?

4

4 に答える 4

15

RangeRanges (更新: の静的メソッドは Guava 14.0 の時点でRanges組み込まれていますRange) が r10 に追加されました。あなたはただできるでしょう:

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

Rangeには、 を個別のドメイン上でRange連続したものとして表示する機能など、他にも多くの強力な機能があります。ImmutableSortedSet

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

Integerここで sを示しましたが、これはRange任意のComparable. タイプにDiscreteDomainContiguousSetが必要です... Guava は、とを提供しています。DiscreteDomain.integers().longs().bigIntegers()

于 2011-04-23T16:09:59.470 に答える
7

述語を使用してコレクションをフィルタリングするためのPredicateインターフェースとさまざまなユーティリティメソッドを備えたGuavaは、その上に構築できるコアを提供します。

このPredicatesクラスでは、一般的に使用される述語をいくつか作成できます。Mikeが提案したように、Issue Trackerで拡張をリクエストできると思いますが、Guavaは高いパワーウェイトレシオを目指しているため、追加されるかどうかはわかりません。

「greaterThan」述語を追加する場合は、「greaterOrEqualThan」、「lesserThan」、「lesserOrEqualThan」も追加する必要があります...これは便利ですが、これは述語の多くの「API膨張」です。実装には1行しかかかりません。ただし、試してみる価値はあります。

より良い解決策は、Guavaでは利用できないすべての「便利な」機能を備えたGuavaを拡張するオープンソースプロジェクトを用意することです。これを「guava-leftovers」などと呼ぶこともできます;)または、Biscottiプロジェクトにそのようなユーティリティメソッドを追加するように依頼することもできます(Guavaにはない「便利な」機能がすでにいくつかあります)。

于 2011-04-02T20:25:36.970 に答える
7

以前にこの機能をリクエストし、この問題について言及されました。どうやら、この機能は Ranges を介して実装され、実装されPredicateます。

于 2011-04-05T06:58:57.583 に答える
1

Predicatesいくつかの一般的な述語を収集しますが、1 つより大きくはありません。グアバがそのようなものを提供するとは思いません。guava プロジェクト サイトでバグ/機能リクエストを提出してみてください: http://code.google.com/p/guava-libraries/issues/list

于 2011-04-02T17:22:57.917 に答える