Oft komme ich zu einem Punkt, wo ich eine ArrayList
iterieren muss und eine Teilmenge daraus basierend auf einer Bedingung erstellen möchte.Elemente aus der Liste entfernen oder eine neue Liste erstellen?
Vom Leistungsstandpunkt: ist es besser, Iterator und iterator.remove()
für die Elemente zu verwenden, die ich entfernen möchte, oder sollte ich diese Elemente zu einer neuen Liste hinzufügen?
for (Iterator<Object> it = list.iterator(); it.hasNext();) {
Object item = it.next();
if (!conditionMatches(item)) {
it.remove();
}
}
oder
List<Object> newList = new ArrayList<>();
for (Object item : list) {
it (contitionMatches(item)) {
newList.add(item);
}
}
Es hängt von vielen Dingen ab, z.B. Speicher, Geschwindigkeit, wenn diese Liste wiederverwendet wird oder nicht, und weiter. Es ist nicht so einfach zu beantworten. –
aus einer großen Perspektive, in einer ArrayList Entfernung ist O (n), Addieren ist O (1) amortisiert. (andere Arten von Listen haben unterschiedliche Komplexität) – njzk2
Profil, Profil, Profil. Theorie ist in Ordnung, aber reelle Zahlen sprechen für sich. – NathanOliver