ArrayList 内のオブジェクトをプロパティで検索する方法 質問する

ArrayList 内のオブジェクトをプロパティで検索する方法 質問する

プロパティがわかっているCarnet場合、オブジェクト を 内で見つけるにはどうすればよいですか。ArrayList<Carnet>codeIsin

List<Carnet> listCarnet = carnetEJB.findAll();

public class Carnet {

    private String codeTitre;
    private String nomTitre;
    private String codeIsin;

    // Setters and getters

}

ベストアンサー1

Java8ストリームを使用できます:

public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsIn) {
    return listCarnet.stream().filter(carnet -> codeIsIn.equals(carnet.getCodeIsin())).findFirst().orElse(null);
}

さらに、多くの異なるオブジェクト( だけではない)がある場合Carnet、または異なるプロパティ( だけではない)で検索する場合はcideIsin、ユーティリティ クラスを構築して、このロジックをその中にカプセル化することができます。

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()));
    }
}

おすすめ記事