Jak mogę sprawdzić, czy wartość, co jest napisane w skanerze istnieje w 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();
Odpowiedzi:
Wystarczy użyć ArrayList.contains (pożądany element) . Na przykład, jeśli szukasz konta conta1 ze swojego przykładu, możesz użyć czegoś takiego:
Edycja: Pamiętaj, że aby to zadziałało, musisz poprawnie zastąpić metody equals () i hashCode () . Jeśli używasz środowiska Eclipse IDE, możesz wygenerować te metody, otwierając najpierw plik źródłowy dla swojego
CurrentAccount
obiektu i wybierającSource > Generate hashCode() and equals()...
źródło
Lepiej używać
HashSet
niżArrayList
wtedy, gdy sprawdzasz, czy istnieje wartość. Dokumentacja Java dlaHashSet
mówi:"This class offers constant time performance for the basic operations (add, remove, contains and size)"
ArrayList.contains()
być może będziesz musiał iterować całą listę, aby znaleźć instancję, której szukasz.źródło
Proszę odnieść się do mojej odpowiedzi w tym poście .
Nie ma potrzeby powtarzania
List
samejequals
metody nadpisania .Użyj
equals
zamiast==
Nazwij to tak:
źródło
this.name.equals(employee.getName())
Możemy użyć
contains
metody, aby sprawdzić, czy element istnieje, jeśli zapewniliśmy implementację,equals
ahashCode
odniesienie do obiektu zostanie użyte do porównania równości. Również w przypadku listycontains
jestO(n)
operacja, gdzie, jak to jestO(1)
dlaHashSet
tak lepiej użyć później. W Javie 8 możemy używać strumieni również do sprawdzania elementu na podstawie jego równości lub na podstawie określonej właściwości.Java 8
źródło
boolean itemExistsBasedOnProp = selectedR.stream().map(Request::getDesc).anyMatch(cn::equals);
teraz potrzebuję go do wyodrębnienia tego elementu! Czy to możliwe ??findAny
: docs.oracle.com/javase/8/docs/api/java/util/stream/…java.util.Collection#stream
Po prostu użyj
.contains
. Na przykład, jeśli sprawdzałeś, czy ArrayListarr
zawiera wartośćval
, po prostu uruchomiszarr.contains(val)
, co zwróci wartość logiczną reprezentującą, czy wartość jest zawarta. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją dotyczącą.contains
.źródło
Gdy lista tablic zawiera obiekt Primitive DataType.
Gdy lista tablic zawiera obiekt UserDefined DataType.
Jak porównać atrybuty Objects w ArrayList?
Mam nadzieję, że to rozwiązanie ci pomoże. Dzięki
źródło
źródło