Lambda Java-迭代Json对象.里面看起来像是复制的



我有一个类似的json,我使用forEach来遍历家族

{
"people": {
"family": [
{
"id": "123",
"member": [
{
"id": "11",
"salary": false
},
{
"id": "12",
"salary": false
}
]
},
{
"id": "124",
"member": [
{
"id": "11",
"salary": false
},
{
"id": "12",
"salary": false
}
]
}
]
}

}

例如,如果我在第一个成员id 123中将salary设置为true,那么当我遍历家庭的第二个元素(id 124(时,salary也为true。

如果我更改第二个id 124中的某个内容,则第一个id 123具有相同的值。看起来每个家庭元素都是同一个对象,但不确定我如何找到它,也不确定如何修复它

代码真的很大,但基本上我正在做这样的事情:

.forEach(family -> {
family.getId() // I get 123 and then 124
family.getMember().forEach(member -> {
System.out.println(member.getSalary()) // Show false for id 123 but then for id 124, show true when i would be false at this point
member.setSalary(true);

知道吗?不知道我还能做什么……谢谢

检查123和124的member集合中的对象是否不同,是否具有不同的引用。听起来这些对象在这两个集合中有相同的引用。尝试覆盖equals和hashCode。

所以我假设更正后的结果应该是:

虚假的虚假的虚假的错误

此语句成员.setSsalary(true(;不应该受到的影响

"成员"应该在单独的对象中,它不应该引用相同的引用(很奇怪(

你能发布完整的代码块吗?

相关内容

最新更新