在python中,您可以将结构for x in [a, b, c, d]
用于循环。可以使用Java中的foreach循环来复制。
如果我想在Java中复制for x, y in z
循环,例如下面的循环,该怎么办?
for x_off, y_off in ( (1, 2), (-1, 2), (1, -2), (-1, -2), (2, 1), (-2, 1), (2, -1), (-2, -1) ):
#do something
我最终只为每个索引使用了变量。但这对于每个内部数组都有大量计数的二维数组将不会有用。
int[][] offsets = new int[][] { {0, 1}, {0, -1}, {1, 0}, {-1, 0}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1} };
for(int[] offset: offsets) {
int x = offset[0], y = offset[1];
// do something with x and y
您应该创建一个用于存储三个值的类:
final class Point3D {
private final int x, y, z;
// constructor, getters, and equals/hashCode/toString here
}
然后您可以使用带有增强的for循环的数组初始化器:
for (Point3D point : new Point3D[] { new Point3D(1, 1, 1), new Point3D(-1, 1, 1),
new Point3D(-1, -1, 1), new Point3D(1, -1, 1) }) {
// code here
}
如果单独创建数组,尤其是在有很多要点的情况下,它的读取效果更好:
Point3D[] points = {
new Point3D( 1, 1, 1), new Point3D(-1, 1, 1),
new Point3D(-1, -1, 1), new Point3D( 1, -1, 1),
new Point3D( 1, 1, -1), new Point3D(-1, 1, -1),
new Point3D(-1, -1, -1), new Point3D( 1, -1, -1)
};
for (Point3D point : points) {
// code here
}