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

时间:2013-09-01 20:52:00

标签: java performance

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

如果所提供的id等于枚举的id,并且如果返回它,那么创建一个将获取id的hashmap并给你枚举或迭代所有enums是否会更快。

如果重要,则有5个枚举。

3 个答案:

答案 0 :(得分:7)

HashMaps专门用于通过密钥检索对象,即使有很多条目也很快。通常,对列表或类似集合的顺序扫描会慢得多。

但如果你只有5件物品,那就没有什么区别了。

编辑:第二个想法是,对于这么少的对象,您可能最好使用顺序扫描,因为计算哈希码的额外工作可能会超过优势。但差别很小,不值得打扰。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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