java可以在使用Iterable迭代元素时更改元素。forEach(消费者)?
我可以在使用Iterable迭代元素时更改它们吗。forEach(消费者)?或者在消费者内部。接受(E)我只能读取基础Iterable的元素,但不能更改它们
如果我可以更改它们,正确的语法是什么
ArrayDeque d = new ArrayDeque<Integer>();
d.add(1);
d.add(2);
d.add(3);
d.add(4);
Consumer<Integer> cons = (e)->{e = e*10;}; // compiles!
d.forEach(cons);
System.out.println(d); // 1 2 3 4 not 10 20 30 40
# 1 楼答案
不,当使用
forEach
时,不能修改元素,因为它的action
是Consumer
,它只accepts
值。forEach
方法的示例代码段重点在于它不会产生任何价值
# 2 楼答案
你想做的和以下一样:
但赋值给e并不会改变它在deque中的值
要想做你想做的,就这么做