我想超过定义的数组。它存储点及其坐标。

public static List<Edge> simpleGraph(List<Point> nodes) {
    int numEdges = nodes.size() * 2;
    List<Edge> edges = new ArrayList<Edge>(numEdges);
    for (int i = 0; i < numEdges; i++) {
        Point p1 = nodes.get((int) (Math.random() * nodes.size()));
        Point p2 = nodes.get((int) (Math.random() * nodes.size()));
        edges.add(new Edge(p1, p2));
    }

    for (int i = 0; i < edges.size(); i++) {
        Edge e = edges.get(i);
        if (e.p1.equals(e.p2))
            edges.remove(i);
    }

    for (int i = 0; i < edges.size(); i++) {
        Edge e = edges.get(i);
        for (int q = 0; q < edges.size(); q++) {
            if (i == q)
                continue;
            Edge e2 = edges.get(q);
            if (e.equals(e2))
                edges.remove(q);
        }
    }

    return edges;
}


我在整数列表中有固定数量的元素,并且想要用我自己的列表中的值覆盖原始的(上面生成的)整数。

可以通过以下方式访问值:

System.out.println (
   "x1 " + e.p1.x + "  y1 " + e.p1.y +
    "   x2 " + e.p2.x + "   y2 " + e.p2.y
);


我尝试使用简单的for迭代,但是不只一次覆盖每个值。

最佳答案

据我了解,您想替换每个边缘的每个点的坐标。这些坐标存储在列表中。

List<Integer> myCoordinates;

// initalize myCoordinates so it has
// edges.size()*points_per_edge*coordinates_per_point elements
// = edges.size() * 2 * 2 in your case

for (int i = 0; i < edges.size(); i++) {
   int j = i*4;
   Edge edge = edges.get(i);
   edge.p1.x = myCoordinates.get(j);
   edge.p1.y = myCoordinates.get(j+1);
   edge.p2.x = myCoordinates.get(j+2);
   edge.p2.y = myCoordinates.get(j+3);
}

10-07 13:23
查看更多