Mam następującą logikę, aby usunąć nieaktywnych użytkowników w systemie, ponieważ nie możemy usunąć wiersza podczas iteracji na liście. Czy jest lepszy sposób to obsłużyć?Jaki jest najlepszy sposób usuwania obiektów z listy
List<User> users = new ArrayList<User>();
List<User> removeUsers = new ArrayList<User>();
for (User user : users) {
if (!user.isActive()) {
removeUsers.add(user);
}
}
users.removeAll(removeUsers);
'Iterator.remove()' działa również jako [maxkar] (http: // stackoverflow.com/questions/3767087/what-is-the-best-to-remove-to-remove-objects-from-a-list/3767175 # 3767175) wskazał. –
-1 Za dużo bałaganu. Iteracja odwrotnie z indeksem? – abyx
@abyx: Za dużo bałaganu? Sporny. Nie czyni go mniej ważnym. Pewnie mogłem dodać używając 'Iterator.remove()' do mojej odpowiedzi, która wygląda czystsza, zgadzam się. Ale zamiast tego zdecydowałem się na odpowiedź innej osoby (równie dobrze). –