Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迭代二维Java数组 publicstaticlist-petersenGraph(){ 列表v=新的ArrayList(); 对于(int i=0;i_Java_Arrays_Iterator - Fatal编程技术网

迭代二维Java数组 publicstaticlist-petersenGraph(){ 列表v=新的ArrayList(); 对于(int i=0;i

迭代二维Java数组 publicstaticlist-petersenGraph(){ 列表v=新的ArrayList(); 对于(int i=0;i,java,arrays,iterator,Java,Arrays,Iterator,我理解所有的事情,直到有一个在边上迭代的函数。到底是怎么回事 编辑:为什么使用e[0]和e[1]访问它们?e[0]是第一个数字,而e[1]是第二个数字吗?多维数组edges实际上是一个“数组数组数组”。for语句一次从edges提取一个元素,而edges的每个元素都是int[] 因此,第一次通过循环时,e将是{0,1}。第二次将是{1,0}。第三次是{1,2}。等等。啊,这太难看了 边是一个二维数组,因此它是一个int数组数组。在实际定义中,它是一个成对的数组 (int[]e:edges)的行仅

我理解所有的事情,直到有一个在边上迭代的函数。到底是怎么回事


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

多维数组
edges
实际上是一个“数组数组数组”。
for
语句一次从
edges
提取一个元素,而
edges
的每个元素都是
int[]

因此,第一次通过循环时,e将是
{0,1}
。第二次将是
{1,0}
。第三次是
{1,2}
。等等。

啊,这太难看了

边是一个二维数组,因此它是一个int数组数组。在实际定义中,它是一个成对的数组

(int[]e:edges)的行仅仅意味着在每次迭代中,e将成为一个不同的int数组,因此在每次迭代中它是一个不同的对

然后,e[0]表示该对中的第一项,e[1]表示另一项。
第一个坐标用于查找顶点,然后发生了一些事情,第二个坐标被加入。在看不到顶点或不知道算法的情况下,它是不清楚的

正在创建的图表上的维基百科页面是

从外观上看,图中的边由Vertex.Conferences集合表示,使用数组构造图,将第一个索引用作每条边的From节点,将第二个索引用作to节点

这也解释了为什么每一对后面都跟着它的对立面,例如{0,1},{1,0},因为彼得森图是无向的,所以节点之间的连接必须在两个方向上表示

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;
}