我有一个简单的课:
public class XYPoint {
public int x, y;
}
还有一个包含Point对象数组的2D数组:
(-2, 2)(-1, 2)(0, 2)(1, 2)(2, 2)
(-2, 1)(-1, 1)(0, 1)(1, 1)(2, 1)
(-2, 0)(-1, 0)(0, 0)(1, 0)(2, 0)
(-2, -1)(-1, -1)(0, -1)(1, -1)(2, -1)
(-2, -2)(-1, -2)(0, -2)(1, -2)(2, -2)
对应的ID为:
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
假设我要获取ID为0
的元素,然后它将返回-2, 2
。如果我想从6
获取,它将返回-1, 1
,依此类推。
有什么方法可以获取元素而不循环整个数组吗?
答案 0 :(得分:1)
从本质上讲,您想象一个以二维方式构造的一维数组。考虑到这一点,您可以像这样将1d坐标(例如在您的情况下为7)映射到2d:
[1d / width] [1d mod width]
1d是您的“ id”,宽度是2d数组的长度
1d / width导致您的ID对应的“行”,而1d mod宽度导致相应的“列”