Java 需要在网格中保存多个实体。我可以在二维数组中使用ArrayList吗?

Java 需要在网格中保存多个实体。我可以在二维数组中使用ArrayList吗?,java,arrays,arraylist,Java,Arrays,Arraylist,因此,我正在使用Java处理进行粒子物理模拟,现在我需要跟踪屏幕某些部分存在的具有x和y坐标的实体对象。我还需要能够知道单元彼此之间的位置,比如检查单元中的对象和边界单元之间的碰撞 实施这样一个系统的最佳方式是什么?是否有可能将ArrayList放在数组的数组中?因为当我尝试时,我似乎没有设法将列表放入数组中。有更好的方法吗?实际上,您根本不需要2D数组,只需要包含所有实体的ArrayList就可以获得所需的所有信息。最大的问题是复杂性,如果所有的东西都可以与所有的东西合并,那么^2上就有。是的

因此,我正在使用Java处理进行粒子物理模拟,现在我需要跟踪屏幕某些部分存在的具有x和y坐标的实体对象。我还需要能够知道单元彼此之间的位置,比如检查单元中的对象和边界单元之间的碰撞


实施这样一个系统的最佳方式是什么?是否有可能将ArrayList放在数组的数组中?因为当我尝试时,我似乎没有设法将列表放入数组中。有更好的方法吗?

实际上,您根本不需要2D数组,只需要包含所有实体的ArrayList就可以获得所需的所有信息。最大的问题是复杂性,如果所有的东西都可以与所有的东西合并,那么^2上就有。是的,我知道我实际上不需要它来进行碰撞检查。我已经让它工作了。然而,当我尝试模拟数百个粒子时,检查确实呈指数增长,这成为一种痛苦。这样一来,一开始,空间就被划分成一个网格。然后,对于碰撞检查,每个栅格将其粒子添加到arraylist中。然后检查同一栅格中的所有粒子与相邻栅格中的粒子之间的碰撞,将检查从n^2减少到a^2+b^2+c^2。。。而a、b、c等都是更小的数字。是的,划分网格是减少类似任务复杂性的常用方法,这是一种很好的方法。您可以使用arraylist类型的数组,我看不出有任何问题:我只建议创建一个类,它将包装此网格的功能。与其像myGrid[x][y]那样直接访问此阵列,不如使用类似myGrid的东西。getGridAtPositionx,y,这将在将来为您节省很多麻烦。是的,这就是我现在要做的。我自己得到了一个GridKeeper类,它存储GridCell类的ArrayList,该类维护实体的ArrayList。还不如一直使用ArrayList,通过在这里和那里相乘和添加一点来获得网格位置。