コンパレータを使用した PriorityQueue の並べ替えのカスタマイズ
PriorityQueue は並べ替え機能を提供しますが、並べ替え順序を指定するには、カスタム コンパレータ関数を実装する必要があります。
カスタム用コンパレーター並べ替え
並べ替え動作をカスタマイズするには、Comparator
public class StringLengthComparator implements Comparator<String> { @Override public int compare(String x, String y) { return Integer.compare(x.length(), y.length()); } }
例: 文字列の長さによる並べ替え
次のコードを考えてみましょう。
Comparator<String> comparator = new StringLengthComparator(); PriorityQueue<String> queue = new PriorityQueue<>(10, comparator); queue.add("short"); queue.add("very long indeed"); queue.add("medium"); while (!queue.isEmpty()) { System.out.println(queue.remove()); }
このコード文字列を長さによって並べ替える PriorityQueue を作成し、短い文字列ほど高い値が与えられます。 priority.
Offer メソッドと Add メソッド
「offer」と「add」は異なるインターフェイス メソッドの実装ですが、どちらも要素を PriorityQueue に追加します。 PriorityQueue の場合、offer メソッドは単純に add メソッドを呼び出します。どちらのメソッドも、PriorityQueue がいっぱいで新しい要素を受け入れることができない場合に例外をスローする可能性があります。
要約すると、並べ替えをカスタマイズするには、コンパレーター関数を実装し、それを引数として PriorityQueue コンストラクターに渡します。これにより、文字列の長さまたはその他の必要なメトリックによる並べ替えなど、独自の比較ロジックに基づいて並べ替えが可能になります。
以上がJava PriorityQueue の並べ替えをカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。