java是迭代两个相关数组列表的有效方法?
我正在寻找一种干净简单的方法来迭代两个直接相关的ArrayList,其中一个的每个索引都映射到另一个的索引(在关系中)
目前,我正在通过一个简单的for
循环来实现这一点,我尝试研究lambdas和for-each
循环,但没有发现一种方法可以同时将其应用于大小相同的两个列表
第一个列表:["Blue", "Red", "Green"]
第二个列表:["Sky", "Roses", "Grass"]
for(int i = 0; i < firstList.size(); i++){
System.out.println(firstList.get(i) + " " + secondList.get(i));
}
结果:
Blue Sky
Red Roses
Green Grass
有没有一种方法可以有效地使用lambda或for-each
循环同时迭代两个列表,以避免使用for
循环
# 1 楼答案
你所拥有的已经相当高效(假设你使用的是ArrayList),简洁易读。然而,这种情况:
通常需要定义关系的类,在您的情况下:
然后这两个列表将成为一个:
然后你可以使用:
# 2 楼答案
所有其他答案都是正确的,首选的解决方案应该始终是@Basil Bourque所示的解决方案,但正如其他人在评论中指出的那样,使用索引迭代非基于数组的列表并不是非常有效。然而,使用迭代器进行迭代(每个实现都可以提供一个有效的实现)应该是可行的
下面是一个使用迭代器迭代两个列表的示例: