Spesso vengo a un punto in cui devo iterare un ArrayList
e voglio creare un sottoinsieme da esso in base a qualsiasi condizione.Rimuovere elementi dalla lista o aggiungere compilare una nuova lista?
Dal punto di vista delle prestazioni: è meglio usare iteratore e iterator.remove()
per gli elementi che voglio rimuovere, o dovrei aggiungere questi elementi a un nuovo elenco?
for (Iterator<Object> it = list.iterator(); it.hasNext();) {
Object item = it.next();
if (!conditionMatches(item)) {
it.remove();
}
}
o
List<Object> newList = new ArrayList<>();
for (Object item : list) {
it (contitionMatches(item)) {
newList.add(item);
}
}
Dipende da molte cose, ad es. memoria, velocità, se questa lista sarà riutilizzata o meno, e via. Non è * quello * semplice da rispondere. –
da una prospettiva big-o, in una rimozione di ArrayList è O (n), l'aggiunta è O (1) ammortizzata. (altri tipi di elenco hanno complessità diversa) – njzk2
profilo, profilo, profilo. la teoria va bene ma i numeri reali parleranno da soli. – NathanOliver