java - 如何通过属性查找ArrayList中的对象

标签 java arraylist collections

如何找到对象,Carnet ,在 ArrayList<Carnet>了解其属性codeIsin .

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

public class Carnet {

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

    // Setters and getters

}

最佳答案

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

关于java - 如何通过属性查找ArrayList中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60187105/

相关文章:

java - 在 Java 中将多个集合组合成一个流的最简单方法是什么?

java - javac 和 ecj 的不同类型推断结果

java - 从 URL 添加图像到 PDF?

java - 遍历Java中的单链表

java - 如何将 long 传递给 spring PUT Controller

java - 我在使用 arraylists 时遇到问题,我无法返回正确的词

java - 序列化包含对象 ArrayList 的对象

java - 如何根据第一个列表中的字段将第二个列表与第一个列表连接?

java - 确定集合或数组中对象的类型

java - 集合的 toString() 方法中的 StackOverflowError 是一个错误吗?