## 削除して再挿入せずに Java PriorityQueue の優先順位を更新できますか?

Barbara Streisand
リリース: 2024-10-25 08:05:02
オリジナル
236 人が閲覧しました

## Can You Update Priorities in a Java PriorityQueue Without Removing and Re-Inserting?

Java PriorityQueue での優先度の更新

オブジェクトの順序付けに Comparator を備えた PriorityQueue を利用する場合、その後のオブジェクトのクラス変数の変更 (

伝統的に、単純な解決策には、オブジェクトを削除し、その値を更新し、再挿入して、優先度キューのコンパレーターをトリガーすることが含まれます。しかし、PriorityQueue のラッパー クラスを作成するより効率的な代替手段はありますか?

回答

残念ながら、削除して再挿入することが最も効果的なアプローチであることに変わりはありません。 PriorityQueue は本質的に、挿入時に新しい要素を適切な位置に挿入し、キューのパフォーマンスを最適化します。デキュー操作中に最も優先度の高い要素を検索すると、パフォーマンスに大きな影響を与えます。

TreeMaps は、HashMap (要素のハッシュコードが変更されると失敗します) と同様に、この制限を共有します。

ラッパー クラスの作成には、必要な場合があります。比較コードをエンキューからデキューに移動し、エンキュー中のソートの必要性を排除します。ただし、このアプローチではパフォーマンスが低下し、優先更新時の同期が必要になります。どちらの方法でも同期が必要であるため、デキューと再エンキューにより、よりシンプルでパフォーマンスの高いソリューションが提供されます。

以上が## 削除して再挿入せずに Java PriorityQueue の優先順位を更新できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!