ビルド待ち行列が必要です。キューは常にそのキーによってソートされたままです。 TreeMapの継ぎ目は、この例のように、それのために素晴らしいことする: http://www.javaexamples4u.com/2009/03/treemap-comparator.html が、大きな問題は、そのスレッドセーフではないということです、そして、私はConcurrentNavigableMap
は素晴らしいたが、どのように私は、TreeMapのと同じように、コンパレータを同じように使うのですか?私はそれのための例を見つけませんでした。Java ConcurrentNavigableMapをTreeMapではなくComparatorで使用するにはどうすればよいですか?
0
A
答えて
1
あなたが実際にPriorityQueueを探しているようですね。スレッドセーフなバージョンが必要な場合は、PriorityBlockingQueueを使用できます。
プライオリティキューを使用すると、順アイテム取得することができますキューである「重要性を。」 Javaの場合、Comparatorまたは項目の自然順序(Comparableを実装している場合)を使用できます。
あなたが本当にConcurrentNavigableMapを使用する必要がある場合は、そのようConcurrentSkipListMapとしての実装を使用する必要があります。 ConcurrentSkipListMapのインスタンスを割り当て、使用するコンパレータに渡します。
new ConcurrentSkipListMap<MyKeyType, MyValueType>(new MyKeyComparator());
1
ConcurrentNavigableMapは単なるインタフェースです。それを実装する具体的なクラスを使用する必要があります。標準コレクションライブラリではConcurrentSkipListMapです。
あなたは基本的にドロップイン交換TreeMapのため、コンパレータを使用して含むものとしてConcurrentSkipListMapのを使用することができるはずです。オペレーションは一般的には類似のパフォーマンス特性(O(log n))を持ちますが、ConcurrentSkipListMapのsize()オペレーションでは変数を読み込むのではなく、スキップリストをトラバースする必要があることを理解しています。大きな地図。
関連する問題
- 1. JavaのComparatorクラスでラムダ式を使うにはどうすればいいですか?
- 2. Comparatorクラスをdouble型のオブジェクトのデータタグに使用するにはどうすればよいですか?
- 3. セキュリティプロバイダをJavaで使用するにはどうすればよいですか?
- 4. JavaでSwingWorkerを使用するにはどうすればよいですか?
- 5. Javaでラジオボタンを使用するにはどうすればよいですか?
- 6. JavaでStringUtilsを使用するにはどうすればよいですか?
- 7. Javaでスレッドを使用するにはどうすればよいですか?
- 8. JavaでJSONataを使用するにはどうすればよいですか?
- 9. JavaでkeyTypedを使用するにはどうすればよいですか?
- 10. JavaでsetPreferredSizeを使用するにはどうすればよいですか?
- 11. Javaでコマンドラインフォントを使用するにはどうすればよいですか?
- 12. JavaのTreeMapからルートノードを取得するにはどうすればよいですか?
- 13. ウェブブラウザでJavaScriptをJavaで使用できるようにするにはどうすればいいですか?
- 14. TreeMapそれはどのようにソートするのですか
- 15. ルビーでパスパターンマッチングのようなJava Antを使用するにはどうすればよいですか?
- 16. JavaでTreeSetをTreeMapの値として扱うにはどうすればいいですか?
- 17. TreeMapに含まれる値のTreeSetを返すにはどうすればよいですか?
- 18. Kotlinでスタックを使用するにはどうすればよいですか?
- 19. メインスレッドではなくワーカースレッドでAsyncSocketを使用するにはどうすればよいですか?
- 20. snabbdom-jsx(Reactではなく)でtsxを使用するにはどうすればよいですか?
- 21. 文字列ではなく、オブジェクトでGtkComboBoxを使用するにはどうすればよいですか?
- 22. SASS構文(SCSSではなく)でサスマップを使用するにはどうすればよいですか?
- 23. EclipseでsrcMLを使用するにはどうすればよいですか?
- 24. Jenkins JenkinsfileサンドボックスでJavaクラス(java.net.URLなど)を使用するにはどうすればよいですか?
- 25. BlackBerryでモノスペースフォントを使用するにはどうすればよいですか?
- 26. GUIではなく、Javaコンソールで矢印キーを検出するにはどうすればよいですか?
- 27. Java Androidコードを短くするにはどうすればよいですか?
- 28. PythonではなくJavaでAPI URLにアクセスするにはどうすればよいですか?
- 29. CrystalReportViewerでフラッシュを使用しないようにするにはどうすればよいですか?
- 30. コードベースでkeystore/trustoreプレーンテキストパスワードを使用しないようにするにはどうすればよいですか?