【问题标题】:Is it good practice to index a list of objects with a hashmap?用哈希图索引对象列表是一种好习惯吗?
【发布时间】:2011-10-01 20:55:40
【问题描述】:

我需要按属性查找对象。

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

另一种选择是将对象放在哈希图中,以属性为键。然后可以简单地通过属性检索对象。

尽管您复制了属性数据,但第二个选项是好的做法吗?

注意:属性假定是唯一的

【问题讨论】:

  • 这取决于。找到对象后如何使用它?如果属性永远不会改变,这是一种很好的做法。如果您打算更改它可能不会。

标签: java list hashmap


【解决方案1】:

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

【讨论】:

  • 要记住的一件事是,如果您有很多对象,那么您的地图将不得不经常自行重建,这可能会很昂贵
  • @hvgotcodes 这仍然摊销 O(1)。即使没有,增长地图仍然只有 O(N)。
  • 当然,这只是需要注意的事情
【解决方案2】:

如果属性是唯一的,并且有很多对象要搜索,或者您需要对它们进行大量搜索,那么当然--创建一个索引。这通常是一种权衡——内存大于速度。

OTOH,如果对象不多,或者你做的次数不多,这两种方式都可能无关紧要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多