gpt4 book ai didi

java - HashMap 会通过字符串类型提供对对象数组的有效访问吗?

转载 作者:行者123 更新时间:2023-11-29 05:03:11 25 4
gpt4 key购买 nike

我正在开发一款游戏,我得到了包含许多对象引用数组的 Main 类。

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

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

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

我正在使用 LibGDX 在 Java 和 Android 上开发游戏。谢谢!

最佳答案

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

有了一个好的对象哈希函数,对象的每个唯一状态都会有它自己的桶。因此,在 HashMap 上调用 get(key) 将立即为您提供对键值的引用。

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

这意味着什么:

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

对于 TreeMap 或 TreeSet 则不同,它们用于拥有有序的 map 或集合。

参见:https://en.m.wikipedia.org/wiki/Hash_table

关于java - HashMap 会通过字符串类型提供对对象数组的有效访问吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31369339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com