Próbuje zastosować metodę remove() z Iteratora, lecz programciągle rzuca wyjątkiem ConcurrentModificationException , właśnie na wierszu z tą metodą. co robie źle?
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.Supplier;
public class Main {
public static void main(String[] args) {
Random r = new Random();
List<Integer> lista = new ArrayList<>();
List<Integer> randomNumbers = new ArrayList<>();
Supplier<Integer> sup = () -> r.nextInt(100);
Consumer<Integer> consumer = x -> System.out.print(x + ",");
Predicate<Integer> predicate = x -> x %2 != 0;
Iterator<Integer> iterator = lista.iterator();
for (int i = 0; i <10 ; i++) {
lista.add(sup.get());
}
for (int i = 0; i <lista.size() ; i++) {
consumer.accept(lista.get(i));
}
System.out.println();
while(iterator.hasNext()) {
if(predicate.test(iterator.next())){
iterator.remove();
}
}
for (int i = 0; i <lista.size() ; i++) {
consumer.accept(lista.get(i));
}
}
}