【问题标题】:Datastructure : hashmap vs linkedhashmap vs treemap数据结构:hashmap vs linkedhashmap vs treemap
【发布时间】:2013-08-12 08:38:17
【问题描述】:

我看到有很多关于这三者之间差异的问题。如果我错了,请告诉我,但如果我总结一下我能读到的内容:

  • Hashmap :总体上会更有效率; O(1)(正常情况),O(N)(最坏情况,仅使用糟糕的哈希算法)
  • LinkedHashmap : 维护元素的插入顺序,比 hashmap 占用更多的内存
  • Treemap :保持元素排序,O(log(n))(平衡时)

我的问题是:为什么我们需要维护插入顺序或元素排序,如果最后插入的性能,查找.. 使用hashmap 更好?

【问题讨论】:

    标签: performance hashmap time-complexity treemap linkedhashmap


    【解决方案1】:

    我使用 Treemap 和 LinkedHashMap 是因为,虽然我可以自己对 HashMap 进行排序,但我怀疑我的解决方案会像 Java 的解决方案一样快或内存效率高。

    【讨论】:

      【解决方案2】:

      我们有时需要主插入顺序,因为我们需要插入顺序来解决手头的问题。听起来有点重言式,但这确实是原因。一些数据是有序的,但也受益于随机访问。

      排序也是如此。它提供了一种非常便宜地查找“下一个”或“上一个”项目的方法,同时对于任意查找仍然相当有效。一个示例是近似查找,例如,您知道要查找的条目以 Foo 开头,但您不知道其余的键是什么。

      当您不需要任何这些操作,只需要精确查找时,Hashmap 的存在使事情变得更快和更简单(没有顺序的概念)。

      【讨论】:

        猜你喜欢
        • 2011-01-25
        • 2011-02-22
        • 2012-05-13
        • 2015-07-16
        • 2016-02-23
        • 2014-11-23
        • 2013-07-28
        • 1970-01-01
        • 2019-06-12
        相关资源
        最近更新 更多