通过hashmap或迭代数组更快地检索对象



基本上我有一个带有id的枚举。

如果提供的id等于枚举的id,那么创建一个散列映射并为您提供枚举,或者迭代所有枚举测试是否更快,如果是,则返回它。

如果重要的话,那么有5个枚举。

HashMaps是专门为通过键检索对象而设计的,即使有很多条目也很快。通常,对列表或类似集合进行顺序扫描会慢得多。

但如果你只有5个项目,那就没有什么真正的区别。

编辑:仔细想想,由于对象太少,你最好进行顺序扫描,因为计算哈希码的额外工作可能会超过优势。但差别太小了,不值得为之烦恼。

哈希映射的查找复杂度为O(1),而迭代自然具有O(n)。也就是说,对于只有5个枚举值,平均迭代可能会更快,而且当您只是在.values()上迭代时,它不需要额外的数据结构。

如果将Enum作为键,则应使用EnumMap。这基本上封装了一个值数组,并且比使用HashMap更快。

最新更新