2016-03-21 4 views
0

私は、最小要素とO(ログn)挿入へのO(1)アクセスをサポートするScala(またはJava/Guava)コレクションを探しています。任意の要素の除去。高性能なスカラ/ Javaコレクションが必要です

思考?

+0

これは、最小限の要素への余分なポインタを持つ 'TreeSet'をラップすることで可能なように聞こえるので、現在の最小要素(O(log n) log n)を照会する)。 –

+1

私はあなたが 'PriorityQueue'を探していると思います:http://www.scala-lang.org/api/current/#scala.collection.mutable.PriorityQueue – Dima

+1

[このページ](http://docs.scala- lang.org/overviews/collections/performance-characteristics.html)は、Scalaコレクションのパフォーマンス特性を検討するときにはまず出発点です。 – jwvh

答えて

-1

ArrayListに基づいた独自のコレクションを作成します。それは最小の要素と最小の要素の位置を追加のフィールドが必要です。その要素が新しい最小要素である場合、その要素を追加するときにこれらの項目を更新します。

PriorityQueue
5

実装上の注意:この実装は、エンキューおよびデキュー方法(offerpollremove()及びadd)のためにO(ログ(N))時間を提供します。 remove(Object)およびcontains(Object)の方法に対する線形時間;検索方法(peekelement、およびsize)の一定時間です。

このクラスはJava Collections Frameworkのメンバーです。

+0

私はPriorityQueueを考慮しましたが、バッキングストアがヒープを使って実装されているため、O(log n) 'removeを得る方法がありません(オブジェクト) '私が望むものです。 – davidrpugh

関連する問題