gpt4 book ai didi

java - ArrayList.forEach() 是变异操作吗?

转载 作者:行者123 更新时间:2023-11-29 08:24:31 25 4
gpt4 key购买 nike

我有一个 HashMap groups,它映射到 ArrayList 对象的值。我想重新分配满足特定条件的值(即在这种情况下,它们存在于另一个列表中)并遇到 forEach 方法。这是我的实现方式。我找不到任何关于它是否能够转换我的数据的文档,因此我的问题。

代码如下:

groups.get(request.getGroup()).forEach(
member -> {
int updatedMemberIndex = request.getGroupMembers().indexOf(member);
if (updatedMemberIndex != -1)
member = request.getGroupMembers().get(updatedMemberIndex);
}
);

下面是request对象中相关方法的方法签名:

List<GroupMember> getGroupMembers()
Group getGroup()

最佳答案

不,您不能以这种方式改变集合。 member 是局部变量,因此在 if 中重新分配它不会执行任何操作。

您可以使用 member 来更改 GroupMember 对象本身的属性,但这不是您想要的。

看起来您正在尝试执行 map 操作。你可能想要这样的东西:

List<GroupMember> newList = groups.get(request.getGroup()).stream().map(
member -> {
int updatedMemberIndex = request.getGroupMembers().indexOf(member);
return updatedMemberIndex != -1
? request.getGroupMembers().get(updatedMemberIndex)
: member;
}
).collect(Collectors.toList());

关于java - ArrayList.forEach() 是变异操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54309248/

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