【问题标题】:Finding elements efficiently in an array在数组中高效查找元素
【发布时间】:2013-03-03 19:12:20
【问题描述】:

在我正在制作的游戏中,我需要不断从列表中查找对象,然后检查它的坐标是否相邻,这些对象有数百个,其中只有 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);
    }

【问题讨论】:

标签: java android arrays list dimensional


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多