【问题标题】:Does the Java API or an open source library provide for a TreeMap-like data structure with constant-time lookup?Java API 或开源库是否提供了具有恒定时间查找的类 TreeMap 数据结构?
【发布时间】:2013-12-11 22:16:59
【问题描述】:

我知道 TreeMap 具有 log(n) 插入和查找运行时复杂性。但是,指向链表中节点的 HashMap 将提供相同的运行时复杂性,但也提供恒定时间查找,这是一个很大的优势。但是,您必须自己实现搜索/插入/删除功能。我想知道 Java 或其他开源库中的某些东西是否为您提供了这个?

我确实意识到,在某些情况下,TreeMap 的红黑树可能比 HashMap 更适合,但在其他情况下,自然排序的恒定时间查找肯定是更可取的。

注意:我知道 LinkedHashMap 为插入顺序提供了一个内置的链表,但我说的是像 TreeMap 那样维护自然顺序。

【问题讨论】:

  • 链接哈希映射是否提供恒定时间查找?这对我来说听起来不正确。不是所有操作都有 O(N) 最坏情况吗?
  • 我认为它有 O(N) 最坏的情况,但如果我错了请纠正我stackoverflow.com/questions/8162501/…
  • 此外,链接哈希映射是否不提供桶之间的自然排序迭代。我不这么认为。
  • @Dlotan 是的,你是对的。这是一个错误类型:-)

标签: java data-structures linked-list hashmap treemap


【解决方案1】:

仅当您的密钥符合您可以在数据结构中利用的模式时。

一个很好的例子是TrieMap。请参阅Wikipedia 了解描述,here 了解包含对实现的引用的讨论。

我前段时间发布了一个 Trie 实现 here。不确定它的效率如何,但它确实有效。自从那篇文章之后,我当然已经改进了它。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-05-25
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多