列表迭代,哪个最有效?

Oli*_*unk 2 java collections performance

我正在开发一个游戏,并且有几个客户存储在ArrayList中,每个客户都有自己唯一的ID,该ID在对象中保存为变量.

如果我想使用他们的ID从列表中检索客户,哪些更好的做法?

  1. 迭代列表中的所有客户,直到找到匹配项.

  2. 将列表转换为键的HashMap(ID)和值(客户),然后只使用.get()方法.也许这与选项一完全相同?

Krz*_*soń 6

HashMap 将更有效(在大多数情况下为O(1),在最坏的情况下为O(n)),迭代列表将是O(n).

当然这取决于你的数据的大小,如果你有很多它然后HashMap是明显的选择,如果你有很少(例如5可能10),可能是一个List更有效的情况 - 常数因素必须在这里考虑,Big-Oh表示法忽略了.