それPriorityQueue
自体はComparitor
、並べ替えのためにアイテムのまたは自然な順序にSet
依存します。同様に、自然な順序またはComparitor
関数に依存するため、デフォルトのJavaインストールの一部として存在するとは思われません。 ..
しかし、必要なインターフェイスを実装し、それらの自然なバッキングなどを使用するだけで、速度が問題にならない場合は、おそらくかなり簡単に作成できます。
MyQueueSet extends PriorityQueue implements Set {
HashSet set;
...
}
残念ながら、Javaのjava.util。*データセットクラスは、コードのチャンクを書き直さずに拡張するのが常に最も簡単であるとは限りません。
バッキングは要素のPriorityQueue
ヒープソートリストであるため、機能をサポートするためにを含める場合、ソートはデータ値ではなくcontains(e)
キューに基づいているため、新しい要素を挿入してからテストを実行すると、O(n)検索が行われます。 、データセット参照を2回維持することを犠牲にして、ルックアップ時間を大幅に改善できます(Javaは値渡しであり、すべてのオブジェクトはヒープ上に存在することに注意してください)。これにより、大規模なセットのパフォーマンスが向上するはずです。HashSet
Set