この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 221|答える: 1

[出典] . NET6における優先度キュー

[リンクをコピー]
2025年10月20日 10:02:53に投稿 | | | |
.NET 6では新しいコレクションタイプ「PriorityQueue」が導入されました。これはその名の通り、通常のキューに加えて優先度のサポートを追加します。 注:彼は非スレッドセーフスレッドの安全性に注意する必要があります。

源:ハイパーリンクのログインが見えます。

始めよう

簡単な使い方の例を見てみましょう。
例示:



出力の順序は追加した順序とは逆であることがわかります。PriorityQueueはデキュー時に最も低い優先度から始まります。値が小さいほど優先度が高くなり、優先度が高くなり、優先度が高くなり、出力も優先度が高くなります。最大出力を先にしたいなら、それは問題ありませんか?答えは「はい」ですが、独自の優先度比較ルールを指定する必要があります。以下の例を参照してください。

シーン

優先度付きの自動ソートでは、必要に応じてPriorityQueueを使うことも検討できます

メッセージキュー

PriorityQueueを使えば、メッセージ送信時に優先度を指定でき、送信時に優先順位が設定される優先度が設定されます。

上記の例では、デフォルトでintを優先度のタイプとして指定し、いくつかのメッセージをキューにマージしますが、多くの場合多くのメッセージがあり、同じ優先度の状況も存在します。これらを利用することができます時間と計量を連邦優先度のタイプとして以下の例を参照できます:
出力の例は以下の通りです:



上記の結果から、優先度の場合、まずより短い時間でメッセージを処理するか、自分たちのニーズに応じてソート方法をカスタマイズし、優先度比較ロジックをカスタマイズすることも可能であることがわかります。



PriorityQueueは、学生の成績ランキングなど、多くのランキングアプリケーションにも利用できます

以下の例コードをご覧ください:
上記リストは成績のリストで、いくつかのテストデータを書いてください。PriorityQueueのUnorderedItemsを使ってソート前にデータを取得できます。また、キューに参加する順番(Enqueue)もこの順です。デフォルトの比較は小さい方から、つまり低いスコアが先です。次に大きい順に並べたいので、比較方法をカスタマイズする必要があります。

上記のHigh2LowComparerはカスタム比較であり、実際には比較結果の逆であり、コードは以下の通りです。
上記の出力は以下の通りです:



もっとその

Redisにはzset(sortedSet)というデータタイプがあり、似たようなことができますが、zsetとPriorityQueueの間にはいくつか違いがあります。zsetは集合であり、自動的に重複を除去するコレクションですが、PriorityQueueは重複が解消されません。zsetは対応する要素の優先度(スコア)を変更できますが、PriorityQueueは 現在、要素の対応する優先度を変更することはサポートされていません

PriorityQueueは私たちのいくつかの問題を解決できますが、使用時にいくつか注意すべき点があります。

  • まず第一に、優先度が同じであれば、出力の順序が異なることがあり、これは内部実装アルゴリズムによって決まり、順序が厳密に保証されることはありません
  • PriorityQueueはスレッド安全ではなく、スレッド安全の問題に注意が必要です
  • PriorityQueueのPeekメソッドは、キュー内の次の要素のみを取得しますが、キューからは削除されません
(終わり)




先の:抖音モールクローラー分析、6神の位置、リスク制御分析、今は7神X-ペルセウスのはずです。
次に:EBPF関連知識へのリンク
 地主| 2025年10月20日 10:09:05 に投稿 |
典型的な応用シナリオ

病院緊急呼び出し、タスクスケジューリングシステム、例えば:重症患者への優先コールコードは以下の通りです:
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com