私は、最小要素とO(ログn)挿入へのO(1)アクセスをサポートするScala(またはJava/Guava)コレクションを探しています。任意の要素の除去。高性能なスカラ/ Javaコレクションが必要です
思考?
私は、最小要素とO(ログn)挿入へのO(1)アクセスをサポートするScala(またはJava/Guava)コレクションを探しています。任意の要素の除去。高性能なスカラ/ Javaコレクションが必要です
思考?
ArrayListに基づいた独自のコレクションを作成します。それは最小の要素と最小の要素の位置を追加のフィールドが必要です。その要素が新しい最小要素である場合、その要素を追加するときにこれらの項目を更新します。
PriorityQueue:
実装上の注意:この実装は、エンキューおよびデキュー方法(
offer
、poll
、remove()
及びadd
)のためにO(ログ(N))時間を提供します。remove(Object)
およびcontains(Object)
の方法に対する線形時間;検索方法(peek
、element
、およびsize
)の一定時間です。このクラスはJava Collections Frameworkのメンバーです。
私はPriorityQueueを考慮しましたが、バッキングストアがヒープを使って実装されているため、O(log n) 'removeを得る方法がありません(オブジェクト) '私が望むものです。 – davidrpugh
これは、最小限の要素への余分なポインタを持つ 'TreeSet'をラップすることで可能なように聞こえるので、現在の最小要素(O(log n) log n)を照会する)。 –
私はあなたが 'PriorityQueue'を探していると思います:http://www.scala-lang.org/api/current/#scala.collection.mutable.PriorityQueue – Dima
[このページ](http://docs.scala- lang.org/overviews/collections/performance-characteristics.html)は、Scalaコレクションのパフォーマンス特性を検討するときにはまず出発点です。 – jwvh