使用hashmap索引对象列表是一种好习惯吗?

时间:2011-10-01 20:55:41

标签: java list hashmap

我需要通过属性查找对象。

一种选择是迭代对象数组并检查属性匹配的每个对象。

另一个选项是将对象放在hashmap中,并将属性作为键。然后,人们可以通过属性简单地检索对象。

尽管你复制了属性数据,第二种选择是否是良好的做法?

注意:该属性被假定为唯一

2 个答案:

答案 0 :(得分:6)

YES!根据您提供的内容,使用Map通常总是更好。在Map中找到一个值(其中键具有良好的散列函数)是 O(1)。在数组或列表中查找元素是 O(n)

答案 1 :(得分:1)

如果属性是唯一的,并且有很多要搜索的对象,或者您需要对它们进行大量搜索,请确保 - 创建索引。这通常是权衡 - 记忆超速。

OTOH,如果没有很多物品,或者你没有做很多事情,那么两种方式都无关紧要。