Java HashMap是否可以通过字符串类型提供对对象数组的有效访问?

Java HashMap是否可以通过字符串类型提供对对象数组的有效访问?,java,android,arrays,libgdx,Java,Android,Arrays,Libgdx,我正在做一个游戏,我得到了一个主类,它包含了很多对象引用数组 在main类中,我循环遍历每个数组并更新对象。问题是我必须为每种类型的对象保留一个数组。对于每种类型都有一个数组是很舒服的,但是当我有几十种类型时,这会使代码变得难看 我考虑使用String | Array的HashMap,每个条目都有对象类型名称(String)和数组本身。每个对象都扩展了我创建的名为GameObject的抽象类。我的问题是使用hashmap有多有效?(这意味着在每个循环中,主类都从映射中获取一个数组,并遍历它的对象

我正在做一个游戏,我得到了一个主类,它包含了很多对象引用数组

在main类中,我循环遍历每个数组并更新对象。问题是我必须为每种类型的对象保留一个数组。对于每种类型都有一个数组是很舒服的,但是当我有几十种类型时,这会使代码变得难看

我考虑使用String | Array的HashMap,每个条目都有对象类型名称(String)和数组本身。每个对象都扩展了我创建的名为GameObject的抽象类。我的问题是使用hashmap有多有效?(这意味着在每个循环中,主类都从映射中获取一个数组,并遍历它的对象。) 我所说的高效是指HashMap的“get”方法是否能降低速度

或者可能有更好的解决方案来容纳大量不同类型的对象

我正在用Java开发这个游戏,到Android,使用LibGDX。
谢谢大家!

HashMap的get方法非常有效,因为它使用哈希表。在映射键是字符串对象的情况下,字符串的值通过哈希函数运行。结果用于索引存储对键的引用的“bucket”

如果对象有一个好的散列函数,那么对象的每个唯一状态都有自己的bucket。因此,在HashMap上调用get(key)将立即为您提供对键值的引用

String的hashcode方法已经实现,并为String的每个状态生成唯一的hash

这意味着什么:

如果您有一个唯一的字符串值,则可以使用HashMap的get方法立即访问该值

对于TreeMap或TreeSet,情况并非如此,它们意味着拥有一个有序的映射或集合


请参阅:

您可以尝试让每个对象扩展一个只有枚举的抽象类,并根据枚举值处理每个对象。忘了提一下,每个对象都扩展一个我创建的名为GameObject的抽象类。但是,我仍然希望对象按类型分开。我只是不想处理大量的数组引用。只需在
GameObject
中创建一个enum字段,并在检查enum值后更新每个对象?可能的重复项您还可以查看实体组件系统。LibGDX有自己的,Ashley:谢谢,这就是我需要知道的。