4

ファンクターが与えられたときにこれを行うヘルパークラスを自分で作成することもできますが、より良いアプローチがあるかどうか、または標準ライブラリに既に何かがあるかどうか疑問に思っていました (あるべきだと思われます)。

StackOverflow で見つけた回答はすべて C# に関するもので、役に立ちません。

ありがとう

4

6 に答える 6

5

いいえ、ありません。Apachecommons-collectionsにはこの種の述語がありますが、結果のコード (匿名の内部クラスを使用) は通常見苦しく、デバッグが面倒です。

言語にクロージャをもたらすまで、基本的なfor ループを使用するだけです。

于 2008-10-22T15:34:32.350 に答える
3

たとえば、 lambdajライブラリを使用すると、次のように評判の高いユーザーを見つけることができます。

List<User> topUsers = 
    select(users, having(on(User.class).getReputation(), greaterThan(20000)));

マジックストリングを使用せず、完全にタイプセーフであり、私の意見では、より読みやすいDSLを提供するため、Quaereライブラリに関していくつかの利点があります。

于 2010-01-14T10:50:18.963 に答える
3

Querydslは、コレクション モジュールを介してこの機能も提供します。私はモジュールのメンテナーなので偏見がありますが、Java 6 の制約を考えると、これはオプションだと思います。

Java 7 では、クロージャを介したフィルタリングを可能にするクロージャがあり、これにより外部ライブラリの使用が不要になります。

于 2010-05-15T17:11:46.317 に答える
2

JXPathがあります。

于 2008-10-22T17:53:48.043 に答える
1

Quaereを試すことができます。使っていませんが面白そうです。

于 2008-10-22T18:20:55.337 に答える
1

Google Collection Libraryはこの種のヘルパー メソッドを提供しており、commons-collections よりも少しクリーンです。

于 2008-10-23T00:01:27.443 に答える