如何通过属性在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
重写Carnet
的equals()
方法。
选项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; }
重写hashcode并等于方法
为了find有意义的对象,你需要覆盖类的equals
和hashcode
方法。 你可以在这里find一个很好的教程。
http://www.thejavageek.com/2013/06/28/significance-of-equals-and-hashcode/