222 votes

trouver si une valeur existe dans arraylist

comment je peux vérifier si une valeur qui est écrite dans scanner existe dans arrayList lista?

 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();
 

379voto

GreenMatt Points 6301

Suffit d'utiliser ArrayList.contient(desiredElement). Par exemple, si vous êtes à la recherche pour le conta1 compte à partir de votre exemple, vous pouvez utiliser quelque chose comme:

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

Edit: Notez que pour que cela fonctionne, vous aurez besoin de bien remplacer la equals() et hashCode() méthodes. Si vous utilisez Eclipse IDE, alors vous pouvez avoir ces méthodes générées par la première ouverture du fichier source pour votre CurrentAccount objet et en sélectionnant Source > Generate hashCode() and equals()...

54voto

SBA Points 131

Mieux vaut utiliser un HashSet qu'un ArrayList lorsque vous vérifiez l'existence d'une valeur. Documents Java pour HashSet dit: "This class offers constant time performance for the basic operations (add, remove, contains and size)"

ArrayList.contains() pourrait avoir à parcourir la liste entière pour trouver l'instance que vous recherchez.

18voto

Sameer Kazi Points 835

Bonjour, il suffit de vous référer à ma réponse sur ce post est expliquer ici Il n’est pas nécessaire d’itérer la liste mais écraser la méthode égale.

 @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 == employee.getName() && this.designation == 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));
 

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X