gpt4 book ai didi

java - 我可以在使用 Iterable.forEach(Consumer) 迭代元素时更改元素吗?

转载 作者:行者123 更新时间:2023-12-01 16:44:13 26 4
gpt4 key购买 nike

我可以在使用 Iterable.forEach(Consumer) 迭代元素时更改元素吗?或者在 Consumer.accept(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

最佳答案

您想要做的事情与:

for (Integer e : d) {
e = e * 10;
}

但是分配给 e 不会改变它在双端队列中的值。

要做你想做的事,就这样做。

 d = d.stream().map(a -> a * 10).collect(
Collectors.toCollection(ArrayDeque::new));
System.out.println(d);

关于java - 我可以在使用 Iterable.forEach(Consumer) 迭代元素时更改元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55854426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com