HashMap 会通过字符串类型提供对对象数组的有效访问吗?
Would HashMap provide efficient access to object arrays by a string type?
我正在开发一款游戏,我得到了 Main class,其中包含许多对象引用数组。
在主体 class 中,我遍历每个数组并更新对象。问题是我必须为每种类型的对象保存一个数组。每种类型都有一个数组很舒服,但是当我有几十种类型时,它会使代码难看。
我考虑过拥有一个 String|Array 的 HashMap,每个条目都有对象类型名称 (String) 和数组本身。每个对象都扩展了一个抽象 class 我创建的名为 GameObject 的对象。我的问题是使用 hashmap 有效率吗? (意味着在每个循环中 Main class 从地图中获取一个数组并遍历它的对象。)
我所说的高效是指如果 HashMap 的 "get" 方法可以减慢速度。
或者也许有更好的解决方案来容纳大量不同类型的对象?
我正在 Java 开发游戏到 Android,使用 LibGDX。
谢谢!
HashMap 的 get 方法非常高效,因为它使用了哈希 table。在map key是String对象的情况下,通过hash函数,字符串的值为运行。结果用于索引存储对键的引用的 "bucket" 。
有了良好的对象哈希函数,对象的每个唯一状态都会有自己的桶。因此,在 HashMap 上调用 get(key) 将立即为您提供对键值的引用。
String 的 hashcode 方法已经实现并为 String 的每个状态生成了一个唯一的哈希。
这是什么意思:
如果您有唯一的字符串值,您可以使用 HashMap 的 get 方法即时访问该值。
TreeMap 或 TreeSet 则不同,它们用于拥有有序的地图或集合。
我正在开发一款游戏,我得到了 Main class,其中包含许多对象引用数组。
在主体 class 中,我遍历每个数组并更新对象。问题是我必须为每种类型的对象保存一个数组。每种类型都有一个数组很舒服,但是当我有几十种类型时,它会使代码难看。
我考虑过拥有一个 String|Array 的 HashMap,每个条目都有对象类型名称 (String) 和数组本身。每个对象都扩展了一个抽象 class 我创建的名为 GameObject 的对象。我的问题是使用 hashmap 有效率吗? (意味着在每个循环中 Main class 从地图中获取一个数组并遍历它的对象。) 我所说的高效是指如果 HashMap 的 "get" 方法可以减慢速度。
或者也许有更好的解决方案来容纳大量不同类型的对象?
我正在 Java 开发游戏到 Android,使用 LibGDX。 谢谢!
HashMap 的 get 方法非常高效,因为它使用了哈希 table。在map key是String对象的情况下,通过hash函数,字符串的值为运行。结果用于索引存储对键的引用的 "bucket" 。
有了良好的对象哈希函数,对象的每个唯一状态都会有自己的桶。因此,在 HashMap 上调用 get(key) 将立即为您提供对键值的引用。
String 的 hashcode 方法已经实现并为 String 的每个状态生成了一个唯一的哈希。
这是什么意思:
如果您有唯一的字符串值,您可以使用 HashMap 的 get 方法即时访问该值。
TreeMap 或 TreeSet 则不同,它们用于拥有有序的地图或集合。