Java 对于我来说,哪种数据结构解决方案可能更好?(哈希集的三维数组列表)

Java 对于我来说,哪种数据结构解决方案可能更好?(哈希集的三维数组列表),java,arraylist,data-structures,hashset,game-development,Java,Arraylist,Data Structures,Hashset,Game Development,我的游戏是一个巨大的开放的世界,(致力于它最终是无限的), 我将所有游戏对象存储到地图的方形部分。这是为了仅在玩家位于该区域时勾选/渲染对象 为了实现这一点,我使用了一个包含哈希集的“3D”arraylist,第一个列表是“行”,第二个列表是“列”,第三个列表是针对不同游戏对象的所有不同类型的哈希集的列表 我最初只有一个2d数组列表,其中哈希集是一个泛型类,为了按照正确的顺序呈现/勾选对象,我会instanceof,然后将它们添加到每个类的临时列表中。这是非常缓慢的 我听说多维列表是不受欢迎的。

我的游戏是一个巨大的开放的世界,(致力于它最终是无限的), 我将所有游戏对象存储到地图的方形部分。这是为了仅在玩家位于该区域时勾选/渲染对象

为了实现这一点,我使用了一个包含哈希集的“3D”
arraylist
,第一个列表是“行”,第二个列表是“列”,第三个列表是针对不同游戏对象的所有不同类型的哈希集的列表

我最初只有一个2d数组列表,其中哈希集是一个泛型类,为了按照正确的顺序呈现/勾选对象,我会
instanceof
,然后将它们添加到每个类的临时列表中。这是非常缓慢的


我听说多维列表是不受欢迎的。有什么更好的方法可以实现这一切?树木等?我不能使用常规数组,因为它们需要增加大小。

听起来你需要根据玩家的当前位置访问这些集合


我认为一个有效的方法是使用多维地图。多维地图的一个很好的实现是google的Guava表。搜索它。

我对您的要求了解得不够,但使用grif阵列是否有帮助?如果当前数组不够,请在其旁边添加另一个数组。在可扩展的外部结构(如列表)中管理所有Aray。编辑:考虑到这一点,
ArrayList
可能会对您有所帮助。它会自动增长并在内部使用数组。我可以说是某种列表或
ArrayList
,尽管在不了解游戏/你需要什么的情况下,无法真正为你提供任何高质量的建议。@tutle游戏不需要太多。仅当玩家在地图中时才需要渲染的部分,因此是多维列表。我不能对该部分使用“仅一个”
HashSet
,因为某些东西需要相互渲染(例如,必须先渲染平铺)。我只是想知道,对于用另一种更简单的数据结构来完成的事情来说,哈希集的3d数组列表是否过于复杂。