【发布时间】:2021-08-02 13:53:52
【问题描述】:
我有 2 个不同的列表:List1 和 List2,我想对元素具有相同 getName() 值的每个索引执行一个操作:
for (int i = 0; i < 5; i++) {
if (list1.get(i).getName().equals(list2.get(i).getName())) {
// TODO
}
}
有没有办法使用 Java 流来做到这一点?我已经尝试过逻辑:
if (List1().stream().anymatch(x -> List2().stream().anymatch(y -> x.getName().equals(y.getName))))) {
// TODO
}
这可行,但List1 的第一个对象(索引)与List2 的每个对象(索引)进行比较。
我需要的是List1 的第一个对象(索引)与List2 的第一个对象(索引)进行比较,第二个索引到第二个等等。
如何使用流而不是 for 循环来编写 if 逻辑。
【问题讨论】:
-
请勿将代码发布为图片
-
使用
IntStream生成索引,例如IntStream.range(0, 5),然后酌情使用map、mapToObj或forEach并访问obj1.get(i)和obj2.get(i)。 -
IntStream.range(0, a.length).mapToObj(i -> a[i].getName() == b[i].getName()).collect(Collectors.toList());是这样的吗? -
条件检查后你想要什么。您是否要将数据存储在另一个列表中。请具体针对您的问题并转到此链接。你的问题在这里解释stackoverflow.com/questions/57252497/…
-
您好,很抱歉给您带来不便,现在为问题添加了更多信息。请帮我解决这个问题。