Java の PriorityQueue を使用した要素の優先順位付け
コレクション内の優先順位の管理は、Java の PriorityQueue を使用して効果的に実行できます。このデータ構造は、カスタマイズ可能なコンパレータに基づいて要素が配置されるキューを維持し、優先度の最も高い要素が最初に取得されるようにします。
並べ替え順序のカスタマイズ
PriorityQueue は、特定の要件に従って、Comparator
import java.util.Comparator; public class StringLengthComparator implements Comparator<String> { @Override public int compare(String s1, String s2) { if (s1.length() < s2.length()) { return -1; } if (s1.length() > s2.length()) { return 1; } return 0; } }
offer vs add メソッド
while offer と addメソッドは要素を PriorityQueue に追加しますが、微妙な違いがあります。このシナリオでは add が IllegalStateException をスローする一方で、容量の制約により要素を追加できない場合、offer は false を返します。ただし、制限のない PriorityQueue では、どちらのメソッドも同じように動作し、キューに要素を追加します。
カスタム コンパレータを使用した PriorityQueue の使用例:
import java.util.PriorityQueue; public class PQDemo { public static void main(String[] args) { PriorityQueue<String> queue = new PriorityQueue<>(10, new StringLengthComparator()); queue.add("short"); queue.add("very long indeed"); queue.add("medium"); while (!queue.isEmpty()) { System.out.println(queue.remove()); } } }
出力:
short medium very long indeed
この例では、優先キューは文字列を長さによって並べ替えます。最初に最短の文字列を取得します。
以上がJava の PriorityQueue を使用して要素の優先順位を管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。