我想超过定义的数组。它存储点及其坐标。
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);
}