我试图通过组合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);
}
}
答案 0 :(得分:26)
不需要forEach
,Lambda表达式将适用于集合的所有元素
ints.removeIf(i -> i%2==0)
removeIf: &#34; 删除此集合中满足给定谓词的所有元素&#34;
<强>只需... 强>
对于集合(i
)中的每个元素(ints
),如果(removeIf
)谓词(i%2==0
)为真,则将其删除。这将作用于原始集合,如果删除了任何元素,则返回true。
答案 1 :(得分:0)
removeif 方法本身一个一个地给出元素作为它的传递参数,这就是为什么我们不需要在这里使用 forEach 循环。
超过整数 ->
ints.forEach(ints.lambdaEx)
它导致两个 n 循环导致 n^2 迭代,这里不需要。
只需使用“removeif( n -> n % 2 == 0)
”