Java 存储静态对象列表的最有效方法是什么?
我正试图储存一份不同敌人的名单。每个敌人都有一个来源,只能在其来源地产卵。每个敌人也有难度,应该和相同难度的敌人一起储存 我把它想象成一个静态的3D敌人阵列,如下所示:Java 存储静态对象列表的最有效方法是什么?,java,arrays,performance,arraylist,hashmap,Java,Arrays,Performance,Arraylist,Hashmap,我正试图储存一份不同敌人的名单。每个敌人都有一个来源,只能在其来源地产卵。每个敌人也有难度,应该和相同难度的敌人一起储存 我把它想象成一个静态的3D敌人阵列,如下所示: Enemy[mountain][2][5] = new Enemy("troll") 其中字段是(从左到右)位置、难度和索引 玩家进入的每个位置都会从这个静态阵列中填充一个敌人的阵列列表 在这种情况下,是否有更有效的数据结构可供使用 (此列表将采用硬编码,在课程过程中不得更改) 编辑- 我希望优化访问时间。该游戏将生成多个位置
Enemy[mountain][2][5] = new Enemy("troll")
其中字段是(从左到右)位置、难度和索引
玩家进入的每个位置都会从这个静态阵列中填充一个敌人的阵列列表
在这种情况下,是否有更有效的数据结构可供使用
(此列表将采用硬编码,在课程过程中不得更改)
编辑-
我希望优化访问时间。该游戏将生成多个位置,每个位置需要根据其来源和难度从列表中随机抽取敌人
根据要求,我将对这个程序的用例进行更多的思考。一旦我有了一个合适的解决方案,我会更新。(谢谢)从概念上讲,这不是一个好主意 此时,您真的不必担心性能。您需要创建一个有用、有用的对象模型,该模型允许您编写优雅、易于阅读且易于增强的代码 使用3D阵列无法实现这些目标 换句话说:你后退一步;仔细考虑需要访问敌人对象的“用例”。从那里开始,你决定是否使用不同的地图,例如;或不同的集合。。。而不是使用3D作为中心“存储点” 根据您的评论进行编辑:这里有两个方面:
最后:假设这是一个学习练习,您仍然可以从3d阵列开始。它会教你很多东西;我只是指出:在更“真实”的应用程序中,您不会这样做;如果你选择这个选项,你很快就会面临某些限制/障碍;仅根据解决方案的性质。从概念上讲,这不是一个好主意 此时,您真的不必担心性能。您需要创建一个有用、有用的对象模型,该模型允许您编写优雅、易于阅读且易于增强的代码 使用3D阵列无法实现这些目标 换句话说:你后退一步;仔细考虑需要访问敌人对象的“用例”。从那里开始,你决定是否使用不同的地图,例如;或不同的集合。。。而不是使用3D作为中心“存储点” 根据您的评论进行编辑:这里有两个方面:
最后:假设这是一个学习练习,您仍然可以从3d阵列开始。它会教你很多东西;我只是指出:在更“真实”的应用程序中,您不会这样做;如果你选择这个选项,你很快就会面临某些限制/障碍;根据您的解决方案的性质。我想到的是一张地图。位置是关键,值是表示敌人及其位置的对象列表-让我们称之为包含敌人及其位置的EneyLocation对象(或者您可以将敌人更改为包含其位置,这似乎是个好主意,但我不知道您的代码)。因此,当玩家进入“山地”区域时,你会做一些类似于敌人的事情