Подтвердить что ты не робот

Как найти объект в ArrayList по свойству

Как я могу найти объект Carnet в ArrayList<Carnet>, зная его свойство codeIsin.

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

public class Carnet {

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

}
4b9b3361

Ответ 1

Вы не можете без итерации.

Вариант 1

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

Вариант 2

Отменить метод equals() Carnet.

Вариант 3

Сохраняя List как Map, используя codeIsIn в качестве ключа:

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

Ответ 2

Используя 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

Ответ 3

Переопределить методы hashcode и equals

Ответ 5

Вот решение, использующее Guava

private User findUserByName(List<User> userList, final String name) {
    Optional<User> userOptional =
            FluentIterable.from(userList).firstMatch(new Predicate<User>() {
                @Override
                public boolean apply(@Nullable User input) {
                    return input.getName().equals(name);
                }
            });
    return userOptional.isPresent() ? userOptional.get() : null; // return user if found otherwise return null if user name don't exist in user list
}