Java 8-для каждого и removeIf

Я пытаюсь выполнить операцию с помощью ForEach в Java 8 путем объединения removeIf метод. Но я получаю ошибку.

Я не могу объединить forEach и removeIf в программе:

public class ForEachIterator {

    public static void main(String[] args) {
        List<Integer> ints = new ArrayList<Integer>();
        for (int i = 0; i < 10; i++) {
            ints.add(i);
        }
        System.out.println(ints);
        // Getting the Error in next line
        ints.forEach(ints.removeIf(i -> i%2 ==0));
        System.out.println(ints);
    }
}

1 ответов


нет необходимости в forEach, лямбда-выражение будет работать на всех элементах набора

ints.removeIf(i -> i%2==0)

removeIf: "удаляет все элементы этой коллекции, удовлетворяющие заданному предикату"

просто...

для каждого элемента в наборе (i), удалить его, если (removeIf) предикат (i%2==0) это правда. Это будет действовать на исходный набор и возвращает true, если какие-либо элементы, где удаленный.