ファンクターが与えられたときにこれを行うヘルパークラスを自分で作成することもできますが、より良いアプローチがあるかどうか、または標準ライブラリに既に何かがあるかどうか疑問に思っていました (あるべきだと思われます)。
StackOverflow で見つけた回答はすべて C# に関するもので、役に立ちません。
ありがとう
いいえ、ありません。Apachecommons-collectionsにはこの種の述語がありますが、結果のコード (匿名の内部クラスを使用) は通常見苦しく、デバッグが面倒です。
言語にクロージャをもたらすまで、基本的なfor ループを使用するだけです。
たとえば、 lambdajライブラリを使用すると、次のように評判の高いユーザーを見つけることができます。
List<User> topUsers =
select(users, having(on(User.class).getReputation(), greaterThan(20000)));
マジックストリングを使用せず、完全にタイプセーフであり、私の意見では、より読みやすいDSLを提供するため、Quaereライブラリに関していくつかの利点があります。
Querydslは、コレクション モジュールを介してこの機能も提供します。私はモジュールのメンテナーなので偏見がありますが、Java 6 の制約を考えると、これはオプションだと思います。
Java 7 では、クロージャを介したフィルタリングを可能にするクロージャがあり、これにより外部ライブラリの使用が不要になります。
JXPathがあります。
Quaereを試すことができます。使っていませんが面白そうです。
Google Collection Libraryはこの種のヘルパー メソッドを提供しており、commons-collections よりも少しクリーンです。