[解決済み] PriorityQueueの使い方を教えてください。
2022-03-24 17:18:51
質問
を取得するにはどうすればよいですか?
PriorityQueue
をソートすることはできますか?
解決方法は?
を受け取るコンストラクタのオーバーロードを使用します。
Comparator<? super E> comparator
で、ソート順に応じて適切な方法で比較を行うコンパレータを渡します。どのようにソートしたいかの例を示していただければ、コンパレータを実装するためのサンプルコードを提供します。(それはかなり簡単ですが)
他でも言われていることですが
offer
と
add
は、インターフェイスメソッドの実装が異なるだけです。JDKのソースでは
add
が呼び出す
offer
. しかし
add
と
offer
持つ
潜在的に
の機能により、一般的に異なる動作をします。
offer
を使用すると、サイズの制限のために値を追加できないことを示すことができますが、この差は
PriorityQueue
のような、境界がないものです。
優先キューを文字列の長さでソートする例です。
// Test.java
import java.util.Comparator;
import java.util.PriorityQueue;
public class Test {
public static void main(String[] args) {
Comparator<String> comparator = new StringLengthComparator();
PriorityQueue<String> queue = new PriorityQueue<String>(10, comparator);
queue.add("short");
queue.add("very long indeed");
queue.add("medium");
while (queue.size() != 0) {
System.out.println(queue.remove());
}
}
}
// StringLengthComparator.java
import java.util.Comparator;
public class StringLengthComparator implements Comparator<String> {
@Override
public int compare(String x, String y) {
// Assume neither string is null. Real code should
// probably be more robust
// You could also just return x.length() - y.length(),
// which would be more efficient.
if (x.length() < y.length()) {
return -1;
}
if (x.length() > y.length()) {
return 1;
}
return 0;
}
}
以下はその出力です。
短い
ミディアム
実に長い
関連
-
IDEA パッケージステートメントの欠落
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] java.lang.UnsupportedClassVersionError を修正する方法。サポートされていないメジャー.マイナーバージョン
-
[解決済み] Javaクラスにおけるcanonical name、simple name、class nameの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Dateが型に解決できない問題を解決する
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
サーブレットクラスのインスタンス化エラーの解決法
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
Javaエラーメッセージがenclosingクラスでない
-
javaでよく使われる英単語
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
Error: java.lang.NoClassDefFoundError: クラス XXXX を初期化できませんでした
-
[解決済み] priorityQueueをmax priorityqueueに変更する。