Java 在数组中高效地查找元素

Java 在数组中高效地查找元素,java,android,arrays,list,dimensional,Java,Android,Arrays,List,Dimensional,在我制作的游戏中,我需要不断地从列表中查找对象,然后检查其坐标是否相邻,有数百个这样的对象,其中只有4个是正确的,有更好的方法吗 列表位于getMap.getTerrain(x,y) 它是一个二维整数数组,保存对象的数据值 int[] r = new int[4]; int tX = (int)(getX()/32); int tY = (int)(getY()/32); if((tY > 1) && (tX > 1) &&am

在我制作的游戏中,我需要不断地从列表中查找对象,然后检查其坐标是否相邻,有数百个这样的对象,其中只有4个是正确的,有更好的方法吗

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

它是一个二维整数数组,保存对象的数据值

    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);
    }
int[]r=newint[4];
int tX=(int)(getX()/32);
intty=(int)(getY()/32);
如果((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资源=0;
对于(inti:r)如果(i!=0)资源=i;
如果(资源!=0)
{
System.out.println(“R不是0,我们在”+资源旁边);
}

嗯。。。如果getTerrain在40x40二维数组中查找一个值,我认为不会更快。唯一的问题可能是,如果您有一个稀疏数组,并且资源分散在整个地图中。在这种情况下,您有1600个数组元素,其中大多数元素都用0填充。如果它是稀疏的,并且您需要具有100x100或1000x1000的大型映射,那么您应该查看一个Point类和一个HashMap,其中Point是关键点。Get terrain然后可以为哈希映射中未包含的任何元素返回0。否则,如果您打算继续使用较小的二维阵列,它看起来并不可怕

你说的名单在哪?可能是重复的