ホームページ >Java >&#&チュートリアル >Java ArrayList 内のオブジェクトをプロパティによって効率的に検索する方法
プロパティによる ArrayList 内のオブジェクトの検索
ArrayList に格納されている大規模なデータセットを扱う場合、特定のプロパティに基づいて特定のオブジェクトを検索する挑戦的なことが判明する可能性があります。この記事では、このシナリオの効率的なソリューションを検討します。特に、codeIsin プロパティによる Carnet オブジェクトの ArrayList の検索に焦点を当てます。
Java 8 ストリームのアプローチ:
Java 8 では、強力なストリーム API を使用して、コレクションに対する操作を実行するためのエレガントかつ簡潔な方法を提供します。 ArrayList 内のオブジェクトをプロパティによって検索するには、stream() 関数を使用して要素のストリームを作成し、続いて filter() 関数を使用して、目的のプロパティに一致しない要素を除外します。最後に、findFirst() 関数を使用して最初に一致する要素を取得するか、見つからない場合は null を返します。
public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsIn) { return listCarnet.stream().filter(carnet -> codeIsIn.equals(carnet.getCodeIsin())).findFirst().orElse(null); }
ユーティリティ クラス メソッドのアプローチ:
これこのアプローチには、さまざまなプロパティの検索ロジックをカプセル化する静的メソッドを含むユーティリティ クラスを作成することが含まれます。これにより、再利用性とモジュール性が確保されます。 FindUtils クラスは、コレクションと述語関数をパラメーターとして受け入れる汎用の findByProperty() メソッドを提供します。述語関数は、コレクションをフィルタリングするための条件を定義します。
public final class FindUtils { public static <T> T findByProperty(Collection<T> col, Predicate<T> filter) { return col.stream().filter(filter).findFirst().orElse(null); } } public final class CarnetUtils { public static Carnet findByCodeTitre(Collection<Carnet> listCarnet, String codeTitre) { return FindUtils.findByProperty(listCarnet, carnet -> codeTitre.equals(carnet.getCodeTitre())); } public static Carnet findByNomTitre(Collection<Carnet> listCarnet, String nomTitre) { return FindUtils.findByProperty(listCarnet, carnet -> nomTitre.equals(carnet.getNomTitre())); } public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsin) { return FindUtils.findByProperty(listCarnet, carnet -> codeIsin.equals(carnet.getCodeIsin())); } }
以上がJava ArrayList 内のオブジェクトをプロパティによって効率的に検索する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。