【问题标题】:High performance Scala/Java collection needed需要高性能 Scala/Java 集合
【发布时间】:2016-03-21 21:54:12
【问题描述】:

我正在寻找一个 Scala(或 Java/Guava)集合,该集合支持 O(1) 访问(理想情况下删除)其最小元素以及 O(log n) 插入和删除任意元素。

想法?

【问题讨论】:

  • 这听起来你可以通过用一个额外的指向最小元素的指针包装 TreeSet 来做到这一点,以便在每次插入或删除之后(已经 O(log n))你更新当前的最小元素(O(log n) 查询)。
  • 我想,你在找PriorityQueuescala-lang.org/api/current/…
  • 在考虑 Scala 集合的性能特征时,This page 是一个很好的起点。
  • @jwvh 没有PriorityQueue 那里虽然......耻辱;)
  • @Dima,我确实说过这只是一个开始的地方。该页面可能会使用一个很好的更新。

标签: java scala collections guava scala-collections


【解决方案1】:

PriorityQueue:

实现说明:此实现为入队和出队方法(offerpollremove()add)提供 O(log(n)) 时间; remove(Object)contains(Object) 方法的线性时间;检索方法(peekelementsize)的固定时间。

这个类是Java Collections Framework的成员。

【讨论】:

  • 我考虑过 PriorityQueue 但由于后备存储是使用堆实现的,因此无法获得我想要的 O(log n) remove(Object)
【解决方案2】:

创建由 ArrayList 支持的您自己的集合。它需要附加字段最小元素和最小元素的位置。如果元素是新的最小值,则在添加元素时更新这些字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 2023-03-18
    • 2017-04-03
    • 2019-12-17
    • 2012-06-17
    相关资源
    最近更新 更多