2010-12-09 22 views
118

Wie kann ich prüfen, ob ein in Scanner geschriebener Wert in einer ArrayList vorhanden ist?Überprüfen, ob in ArrayList ein Wert vorhanden ist

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

Antwort

221

Verwenden Sie einfach ArrayList.contains(desiredElement). Zum Beispiel, wenn Sie für das conta1 Konto von Ihrem Beispiel suchen, könnten Sie so etwas wie verwenden:

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

Edit: Beachten Sie, dass für diese zu arbeiten, um, müssen Sie richtig außer Kraft setzen die equals() und hashCode() Methoden. Wenn Sie Eclipse-IDE verwenden, dann können Sie diese Methoden erzeugt, indem zuerst haben die Quelldatei für Ihre CurrentAccount Objekt zu öffnen und die Auswahl Source > Generate hashCode() and equals()...

+7

equals() Methode sollte in CurrentAccount überschrieben werden, um zu bestimmen, wenn sie das gleiche Objekt sind – Javi

+1

In diesem Fall muss Hashcode() auch überschrieben werden. Pro Hashcode() müssen gleiche Objekte gleiche Hashcodes haben. – zockman

+0

@zockman sicher, dass Sie Recht haben, obwohl ich denke, überschreiben gleich ist in diesem Fall noch wichtiger, wenn nicht ein CurrentAccount-Objekt möglicherweise nicht das gleiche sein, auch wenn alle ihre Attribute den gleichen Wert haben. Aber ich stimme auch darin überein, Hashcode() zu überschreiben. – Javi

32

Besser ein HashSet als ein ArrayList zu verwenden, wenn Sie auf die Existenz eines Wertes prüft wird. Java-Dokumentation für HashSet sagt: "This class offers constant time performance for the basic operations (add, remove, contains and size)"

ArrayList.contains() könnte die ganze Liste durchlaufen haben, die Instanz, die Sie suchen zu finden.

8

Hallo, beziehen Sie sich einfach auf meine Antwort auf this post ist hier zu erklären Es besteht keine Notwendigkeit, Liste zu überschreiben, überschreiben Sie gleich Methode.

equels Methode anstelle von == AKTUALISIERT

@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; 
} 

Call: Objekt von Primitive Datentyp

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

} 
+2

Sie verwenden ==, um Zeichenfolgen zu vergleichen –

+0

Sie sollten equals() anstelle von == verwenden, um Strings 'this.name.equals (employee .getName()) ' – Lucky

+0

aktualisierte Antwort, Wenn diese Hilfe dann upvote :) –

0

Wenn Array-Liste enthält.

Use this function: 
arrayList.contains(value); 

if list contains that value then it will return true else false. 

Wenn die Array-Liste ein Objekt mit UserDefined DataType enthält.

Follow this below Link 

How to compare Objects attributes in an ArrayList?

Ich hoffe, dass diese Lösung Ihnen helfen. Danke

Verwandte Themen