在数组中有效地查找元素

时间:2013-03-03 19:12:20

标签: java android arrays list dimensional

在我正在制作的游戏中,我需要经常从列表中找到对象,然后检查它的坐标是否相邻,有数百个这些对象,其中只有4个是正确的,有更好的方法吗此?

列表位于getMap.getTerrain(x,y);

它是一个2维的int数组,用于保存对象的dataValue。

    int[] r = new int[4];
    int tX = (int)(getX()/32);
    int tY = (int)(getY()/32);
    if((tY > 1) && (tX > 1) && (tY < 39) && (tX < 39))
    {
    r[0] = getMap().getTerrain(tX-1, tY);
    r[1] = getMap().getTerrain(tX+1, tY);
    r[2] = getMap().getTerrain(tX, tY-1);
    r[3] = getMap().getTerrain(tX, tY+1);
    //}
    }
    int resource = 0;
    for(int i : r) if(i != 0) resource = i; 
    if(resource != 0)
    {
        System.out.println("R isnt 0, We are next to a "+resource);
    }

1 个答案:

答案 0 :(得分:0)

嗯...如果getTerrain在40x40二维数组中查找一个值,我认为你不会得到更快的速度。唯一的问题可能是,如果您有一个稀疏数组,并且资源分散在整个地图中。在这种情况下,你有1,600个数组元素,其中大多数填充0.如果它是稀疏的,你想要100 x 100或1,000 x 1,000的大型地图,那么你应该看一个Point类和一个HashMap,其中的点是关键。然后,获取地形可以为不在哈希映射中的任何元素返回0。否则它看起来并不可怕,如果你要坚持使用小的二维阵列。