オブジェクトのArrayListがあります。オブジェクトはすべて同じクラスであり、ブールデータ型であるパブリックフィールドが含まれています。配列全体を反復処理して各フィールドをチェックすることなく、このフィールドがtrueに設定されているarraylist内のインスタンスが存在するかどうかを判断することは可能ですか?反復ループの短縮版があるかどうか疑問に思っています。ありがとうございました。
4 に答える
いいえ。
何らかの方法でリスト内の値を追跡する追加の構造がない限り(たとえば、各追加/削除を追跡し、追加後にブールフィールドが変更されないようにすることによって)、これなしでこれをチェックする方法はありません。反復。
反復は、再帰または別のメソッド内で「非表示」にすることができますが、それによって大きな変化はありません。
適切なクロージャがないと構文がひどく複雑になるため、JDKではこれをサポートしていません。簡潔な構文と使いやすさのバランスを実現するライブラリがあります:LambdaJ。これを達成するために必要なハックは、それ自体が驚くべき話です。
Javaにはそのようなものはありません。
ただし、GuavaはPredicateとCollections2.filter()を使用してこの種のものを提供します。しかし、それは一行ではありません。
すこし...
LINQ for Javaのようなものを探しているので、次のようなことを行うことができます
collection.any(x => x.bool)
ここにいくつかのライブラリがあります:
LINQに相当するJavaは何ですか?
それらを調べると、それを行うためのいくつかの速記関数が見つかるはずですが、それらはすべて、何らかの形でコレクションを反復処理します(関数の下に隠されているだけです)。