Java 在数组中高效地查找元素
在我制作的游戏中,我需要不断地从列表中查找对象,然后检查其坐标是否相邻,有数百个这样的对象,其中只有4个是正确的,有更好的方法吗 列表位于getMap.getTerrain(x,y) 它是一个二维整数数组,保存对象的数据值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
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。否则,如果您打算继续使用较小的二维阵列,它看起来并不可怕 你说的名单在哪?可能是重复的