java - 遍历二维 Java 数组

标签 java arrays iterator

public static List<Vertex<Integer>> petersenGraph() {
    List<Vertex<Integer>> v = new ArrayList<Vertex<Integer>>();

    for (int i = 0; i < 10; i++) {
        v.add(new Vertex<Integer>(i));
    }

    int[][] edges =
    {{0,1}, {1,0}, {1,2}, {2,1}, {2,3}, {3,2}, {3,4}, {4,3}, {4,0}, {0,4},
    {5,6}, {6,5}, {6,7}, {7,6}, {7,8}, {8,7}, {8,9}, {9,8}, {9,5}, {5,9},
    {5,0}, {0,5}, {6,2}, {2,6}, {7,4}, {4,7}, {8,1}, {1,8}, {9,3}, {3,9}};

    for (int[] e : edges)
        v.get(e[0]).successors().add(v.get(e[1]));

    return v;
}

我了解所有内容,直到有遍历边缘的 for 为止。那里到底发生了什么?

编辑:为什么使用 e[0]e[1] 访问它们? e[0] 是第一个数字,e[1] 是第二个吗?

最佳答案

啊,那太丑了。

edges是一个二维数组,所以它是一个int数组的数组。在实际定义中,它是一个对数组。

(int[] e: edges) 这行只是意味着在每次迭代中,e 将变成不同的整数数组,因此在每次迭代中它是不同的对。

然后,e[0] 代表对中的第一项,e[1] 代表另一项。 所以第一个坐标是用来查找顶点的,然后发生了一些事情,第二个坐标被添加进来。没有看到顶点或不知道算法,这是不清楚的。

关于java - 遍历二维 Java 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/486197/

相关文章:

即使工作正常,Java 方法创建也无法读取

java - 改进解析文本文件的代码

javascript - 按类名将图像 src 插入 Javascript 数组

javascript - Laravel 验证数组迭代

c# - 如何在 .NET 中创建值类型集合?

c++ - 距离使我的迭代器 "freeze"

c++ - 为什么 C++ STL 中的算法、迭代器和容器是分离的

loops - 你如何在 AppleScript 中循环访问菜单?

java - 通过一次调用记录 java 中的方法范围

java - Java 中类似斐波那契数列的非递归解决方案是什么?