【发布时间】:2011-10-01 20:55:40
【问题描述】:
我需要按属性查找对象。
一种选择是遍历对象数组并检查属性匹配的每个对象。
另一种选择是将对象放在哈希图中,以属性为键。然后可以简单地通过属性检索对象。
尽管您复制了属性数据,但第二个选项是好的做法吗?
注意:属性假定是唯一的
【问题讨论】:
-
这取决于。找到对象后如何使用它?如果属性永远不会改变,这是一种很好的做法。如果您打算更改它可能不会。
我需要按属性查找对象。
一种选择是遍历对象数组并检查属性匹配的每个对象。
另一种选择是将对象放在哈希图中,以属性为键。然后可以简单地通过属性检索对象。
尽管您复制了属性数据,但第二个选项是好的做法吗?
注意:属性假定是唯一的
【问题讨论】:
是的!根据您提供的信息,通常使用地图总是更好。在 Map 中找到一个值(其中键具有良好的哈希函数)是 O(1)。在数组或列表中查找元素是 O(n)。
【讨论】:
如果属性是唯一的,并且有很多对象要搜索,或者您需要对它们进行大量搜索,那么当然--创建一个索引。这通常是一种权衡——内存大于速度。
OTOH,如果对象不多,或者你做的次数不多,这两种方式都可能无关紧要。
【讨论】: