如何从2D数组中获取元素而不循环整个数组?

时间:2019-02-19 08:58:55

标签: java arrays java-8

我有一个简单的课:

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,依此类推。

有什么方法可以获取元素而不循环整个数组吗?

1 个答案:

答案 0 :(得分:1)

从本质上讲,您想象一个以二维方式构造的一维数组。考虑到这一点,您可以像这样将1d坐标(例如在您的情况下为7)映射到2d:

[1d / width] [1d mod width]

1d是您的“ id”,宽度是2d数组的长度

1d / width导致您的ID对应的“行”,而1d mod宽度导致相应的“列”