如何通过属性在ArrayList中查找对象 [英] How to find an object in an ArrayList by property
本文介绍了如何通过属性在ArrayList中查找对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在知道其属性 codeIsin
的 ArrayList
中找到对象 Carnet
.
How can I find an object, Carnet
, in a ArrayList<Carnet>
knowing its property codeIsin
.
List<Carnet> listCarnet = carnetEJB.findAll();
public class Carnet {
private String codeTitre;
private String nomTitre;
private String codeIsin;
// Setters and getters
}
推荐答案
在 Java8 中,您可以使用流:
In Java8 you can use streams:
public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsIn) {
return listCarnet.stream().filter(carnet -> codeIsIn.equals(carnet.getCodeIsin())).findFirst().orElse(null);
}
此外,如果您有许多不同的对象(不仅是 Carnet
),或者您想通过不同的属性(不仅是 cideIsin
)找到它,您可以构建一个实用程序类,将这个逻辑封装在其中:
Additionally, in case you have many different objects (not only Carnet
) or you want to find it by different properties (not only by cideIsin
), you could build an utility class, to ecapsulate this logic in it:
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()));
}
}
这篇关于如何通过属性在ArrayList中查找对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文