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

盖德·威斯伯格

我正在开发一个游戏,并且我得到了Main类,其中包含许多对象引用数组。

在主类中,我遍历每个数组并更新对象。问题是我必须为每种类型的对象保存一个数组。每个类型都有一个数组很舒服,但是当我有几十个类型时,它会使代码变得丑陋。

我考虑过要使用String | Array的HashMap,并且每个条目都将具有对象类型名称(String)和数组本身。每个对象都扩展了一个我创建的抽象类,称为GameObject。我的问题是使用hashmap效率高吗?(意味着在每个循环中,Main类都会从地图中获取一个数组并贯穿其对象。)有效是指HashMap的“ get”方法是否会减慢速度。

也许有更好的解决方案来容纳许多不同类型的对象?

我正在使用LibGDX将Java游戏开发为Android。谢谢!

科尔尼洛夫

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

通过为对象提供良好的哈希功能,对象的每个唯一状态都将具有其自己的存储桶。因此,在HashMap上调用get(key)将立即为您提供对该键值的引用。

String的hashcode方法已经实现,并为String的每个状态产生了唯一的哈希。

这意味着什么:

如果您具有唯一的String值,则可以使用HashMap的get方法立即访问该值。

对于TreeMap或TreeSet而言,情况并非如此,这意味着它们具有有序的地图或集合。

请参阅:https//en.m.wikipedia.org/wiki/Hash_table

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查字符串数组中是否存在字符串的有效方法

通过包含字符串对对象数组进行排序

如何通过检查字符串的值是否在数组中来检查字符串是否有效

检查提供的字符串是否是有效的项目列表

是否可以验证链接(或字符串)是否与任何有效的 Jekyll 永久链接匹配?

如何通过作为数组的子属性有效地对对象数组进行分组?

有效的Unicode字符串可以包含FFFF吗?Java / CharacterIterator是否损坏?

Java编译器是否可以有效地处理内联字符串?

如果我使用字符串作为对象的键,更改 hashCode() 是否有效?

检查对象是否为字符串的最有效方法

检查字符串是否属于数组的最有效/更快的方法

类名必须是有效的对象或字符串

Ramda,检查字符串是否有效

此字符串加法是否有效?

从字符串数组中选择有效的IP

有效地串联字符串数组

创建字符串数组的有效方法

对对象数组进行分组的最有效方法

如何使用字符串类型对象的键值对对象数组进行排序

如何通过对象变量字符串对对象的数组列表进行排序

在REST API请求有效载荷中提供POJO对象作为序列化字符串

意外的字符(“%”(代码37)):应为有效值(数字,字符串,数组,对象,“真”,“假”或“空”)

意外的字符(“ a”(代码97)):应为有效值(数字,字符串,数组,对象,“真”,“假”或“空”)

是否可以通过字符串或符号动态访问模块?

通过数组字符串从JavaScript对象访问值

检查给定的字符串是否为转换DateTime的有效格式字符串

在字符串数组中加载字符串的有效地址?

从字符串数组中删除子字符串的最有效方法

可以测试字符串是否为有效Firebase密钥的正则表达式是什么?