Wie kann ich überprüfen, ob ein im Scanner geschriebener Wert in einem vorhanden ist 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();
Antworten:
Verwenden Sie einfach ArrayList.contains (gewünschtes Element) . Wenn Sie beispielsweise nach dem conta1-Konto in Ihrem Beispiel suchen, können Sie Folgendes verwenden:
Bearbeiten: Damit dies funktioniert, müssen Sie die Methoden equals () und hashCode () ordnungsgemäß überschreiben . Wenn Sie Eclipse IDE verwenden, können Sie diese Methoden generieren lassen, indem Sie zuerst die Quelldatei für Ihr
CurrentAccount
Objekt öffnen und auswählenSource > Generate hashCode() and equals()...
quelle
Verwenden Sie besser a
HashSet
als a,ArrayList
wenn Sie prüfen, ob ein Wert vorhanden ist. Java-Dokumente fürHashSet
sagt:"This class offers constant time performance for the basic operations (add, remove, contains and size)"
ArrayList.contains()
Möglicherweise muss die gesamte Liste durchlaufen werden, um die gesuchte Instanz zu finden.quelle
Bitte beziehen Sie sich auf meine Antwort auf diesen Beitrag .
Es ist nicht erforderlich,
List
dieequals
Methode einfach zu überschreiben .Verwenden Sie
equals
anstelle von==
Nennen Sie es so:
quelle
this.name.equals(employee.getName())
Wir können verwenden
contains
Methode überprüfen , ob ein Element vorhanden ist, wenn wir die Umsetzung zur Verfügung gestellt habenequals
undhashCode
anderen Objektverweis für Gleichheitsvergleich verwendet werden. Auch im Falle einer Listecontains
handeltO(n)
es sichO(1)
um eine Operation, beiHashSet
der die spätere Verwendung besser ist. In Java 8 können wir Streams auch verwenden, um Elemente basierend auf ihrer Gleichheit oder basierend auf einer bestimmten Eigenschaft zu überprüfen.Java 8
quelle
boolean itemExistsBasedOnProp = selectedR.stream().map(Request::getDesc).anyMatch(cn::equals);
Jetzt brauche ich ihn, um diesen Gegenstand zu extrahieren! ist es möglich ??findAny
: docs.oracle.com/javase/8/docs/api/java/util/stream/…Wenn die Array-Liste ein Objekt vom Typ Primitive DataType enthält.
Wenn die Array-Liste ein Objekt vom Typ UserDefined DataType enthält.
Wie vergleiche ich Objektattribute in einer ArrayList?
Ich hoffe, diese Lösung wird Ihnen helfen. Vielen Dank
quelle
quelle
Einfach benutzen
.contains
. Wenn Sie beispielsweise prüfen, ob eine ArrayListarr
einen Wert enthältval
, führen Sie einfach ausarr.contains(val)
, wodurch ein Boolescher Wert zurückgegeben wird, der angibt, ob der Wert enthalten ist. Weitere Informationen finden Sie in den Dokumenten für.contains
.quelle