如何通过属性在ArrayList中查找对象

我怎么能find一个对象, Carnet ,在一个ArrayList<Carnet>知道它的属性codeIsin

 List<Carnet> listCarnet=carnetEJB.findAll(); public class Carnet { private String codeTitre; private String nomTitre; private String codeIsin; } 

你不能没有迭代。

选项1

 Carnet findCarnet(String codeIsIn) { for(Carnet carnet : listCarnet) { if(carnet.getCodeIsIn().equals(codeIsIn)) { return carnet; } } return null; } 

选项2

重写Carnetequals()方法。

选项3

使用codeIsIn作为键将您的List存储为Map

 HashMap<String, Carnet> carnets = new HashMap<>(); // setting map Carnet carnet = carnets.get(codeIsIn); 

使用Java 8,我们可以轻松完成。

 Carnet getCarnet(String codeIsin) { Predicate<Carnet> predicate = c-> c.getCodeIsin.equals(codeIsin); Carnet obj = list.stream().filter(predicate).findFirst().get(); return obj; } 

http://www.concretepage.com/forum/thread?qid=465

重写hashcode并等于方法

为了find有意义的对象,你需要覆盖类的equalshashcode方法。 你可以在这里find一个很好的教程。

http://www.thejavageek.com/2013/06/28/significance-of-equals-and-hashcode/