Проверьте, существует ли значение в ArrayList

Как я могу проверить, существует ли в ArrayList значение, написанное в сканере?

List<CurrentAccount> lista = new ArrayList<CurrentAccount>();

CurrentAccount conta1 = new CurrentAccount("Alberto Carlos", 1052);
CurrentAccount conta2 = new CurrentAccount("Pedro Fonseca", 30);
CurrentAccount conta3 = new CurrentAccount("Ricardo Vitor", 1534);
CurrentAccount conta4 = new CurrentAccount("João Lopes", 3135);

lista.add(conta1);
lista.add(conta2);
lista.add(conta3);
lista.add(conta4);

Collections.sort(lista);

System.out.printf("Bank Accounts:" + "%n");
Iterator<CurrentAccount> itr = lista.iterator();
while (itr.hasNext()) {
    CurrentAccount element = itr.next();
    System.out.printf(element + " " + "%n");
}
System.out.println();

Ответ 1

Просто используйте ArrayList.contains(wishElement). Например, если вы ищете учетную запись conta1 из своего примера, вы можете использовать что-то вроде:

if (lista.contains(conta1)) {
    System.out.println("Account found");
} else {
    System.out.println("Account not found");
}

Edit: Обратите внимание, что для того, чтобы это сработало, вам необходимо должным образом переопределить equals() и hashCode(). Если вы используете Eclipse IDE, вы можете создать эти методы, сначала открыв исходный файл для вашего объекта CurrentAccount и выбрав Source > Generate hashCode() and equals()...

Ответ 2

Лучше использовать HashSet, чем ArrayList, когда вы проверяете наличие значения. Документы Java для HashSet говорят: "This class offers constant time performance for the basic operations (add, remove, contains and size)"

ArrayList.contains() может потребоваться перебрать весь список, чтобы найти искомый экземпляр.

Ответ 3

Привет, просто отправьте мой ответ на этот пост. Нет необходимости переименовывать список, просто переписывая метод equals.

ОБНОВЛЕНО устанавливает метод вместо ==

@Override
public boolean  equals (Object object) {
    boolean result = false;
    if (object == null || object.getClass() != getClass()) {
        result = false;
    } else {
        EmployeeModel employee = (EmployeeModel) object;
        if (this.name.equals(employee.getName()) && this.designation.equals(employee.getDesignation())   && this.age == employee.getAge()) {
            result = true;
        }
    }
    return result;
}

Вызов:

public static void main(String args[]) {

    EmployeeModel first = new EmployeeModel("Sameer", "Developer", 25);
    EmployeeModel second = new EmployeeModel("Jon", "Manager", 30);
    EmployeeModel third = new EmployeeModel("Priyanka", "Tester", 24);

    List<EmployeeModel> employeeList = new ArrayList<EmployeeModel>();
    employeeList.add(first);
    employeeList.add(second);
    employeeList.add(third);

    EmployeeModel checkUserOne = new EmployeeModel("Sameer", "Developer", 25);
    System.out.println("Check checkUserOne is in list or not ");
    System.out.println("Is checkUserOne Preasent = ? "+employeeList.contains(checkUserOne));

    EmployeeModel checkUserTwo = new EmployeeModel("Tim", "Tester", 24);
    System.out.println("Check checkUserTwo is in list or not ");
    System.out.println("Is checkUserTwo Preasent = ? "+employeeList.contains(checkUserTwo));

}