迭代两个相关 ArrayList 的有效方法?

Jac*_*nte 4 java collections loops list

我正在寻找一种干净简单的方法来迭代两个直接相关的 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));
}
Run Code Online (Sandbox Code Playgroud)

结果:

Blue Sky
Red Roses
Green Grass
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 lambda 或for-each循环同时有效地迭代两个列表以避免使用for循环?

dre*_*ash 8

你所拥有的已经非常高效(假设你使用的是 ArrayList),简洁易读。但是,这种类型的场景:

我正在寻找一种干净简单的方法来迭代两个直接相关的 ArrayList,因为一个的每个索引映射到另一个(关系)的索引。

在您的情况下,通常需要一个定义关系的类:

public class MyC {
    private final String color;
    private final String object;

    public MyC(String color, String object) {
        this.color = color;
        this.object = object;
    }
    public String getColor(){
        return color;
    }
    public String getObject(){
        return object;
    }

    @Override
    public String toString() {
        return "MyC{" +
                "color='" + color + '\'' +
                ", object='" + object + '\'' +
                '}';
    }
} 
Run Code Online (Sandbox Code Playgroud)

那么这两个列表将成为一个:

List<MyC> list = List.of(new MyC("Blue", "Sky"), new MyC("Red", "Roses"), new MyC("Green", "Grass") );
Run Code Online (Sandbox Code Playgroud)

然后你可以使用:

list.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)