【发布时间】:2020-11-16 10:29:23
【问题描述】:
您能帮我为两个不同的列表编写两个嵌套的 foreach 循环,我需要比较存储在两个列表中的特定对象属性吗?
List<Object1> listOfObject1 = mapper.selectObject1ByName(value1);
List<Object2> listOfObject2 = mapper.selectObject2ByName(value2);
listOfObject1.stream().forEach(object1 -> {
listOfObject2.stream().forEach(object2 -> {
if (object1.getCode() == object2.getCode()) {
//do something
}
});
});
当然我得到了这个错误:“在 lambda 表达式中使用的变量应该是最终的或有效地最终的”但我不能使任何列表成为最终的,因为上面有一些决策逻辑我用正确的填充列表值,我正在写更多地方的列表。
【问题讨论】:
-
如果您的“做某事”没有重新分配列表,您可以将列表复制到最终列表
-
为什么不只使用(增强的)for 循环?
-
否则,你可以使用普通的 for 循环
-
我很好奇除了制作另一个列表副本或使用“旧”foreach 循环之外是否还有其他方法。 lambdas 的好处。