ホームページ >Java >&#&チュートリアル >Java の PriorityQueue にカスタムの並べ替え順序を実装するにはどうすればよいですか?

Java の PriorityQueue にカスタムの並べ替え順序を実装するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-30 18:28:13271ブラウズ

How Can I Implement a Custom Sort Order in Java's PriorityQueue?

Java の PriorityQueue のカスタム ソート順序

概要

Java の基本的なデータ構造である PriorityQueue は、効率的な方法を提供します。優先度に従って順序付けされた要素を管理します。ただし、デフォルトの並べ替えメカニズムは、必ずしも目的の並べ替え順序と一致するとは限りません。

カスタム 並べ替え順序

PriorityQueue のカスタム並べ替え順序を指定するには、コンストラクターを使用します。 Comparator を受け取るオーバーロードスーパーE>コンパレータ。希望の並べ替え順序に基づいて要素を比較するコンパレータを渡します。

コンパレータの実装

コンパレータは、比較ロジックを指定するために、compare メソッドを実装する必要があります。このメソッドは 2 つの要素を受け取り、相対的な順序を示す整数を返します。

  • -1 (最初の要素が 2 番目の要素より前に来る必要がある場合)
  • 0 (要素が等しい場合)
  • 1 (最初の要素が後続する場合) 2 番目

文字列の PriorityQueue を文字列の長さで昇順に並べ替える例を考えてみましょう。以下にコンパレーターと PriorityQueue の使用例を示します。

import java.util.*;

class StringLengthComparator implements Comparator<String> {
    @Override
    public int compare(String x, String y) {
        return x.length() - y.length(); // Sort by ascending length
    }
}

...
Comparator<String> comparator = new StringLengthComparator();
PriorityQueue<String> queue = new PriorityQueue<>(10, comparator);
queue.add("short");
queue.add("very long indeed");
queue.add("medium");

add と offer

add と offer は両方とも、PriorityQueue インターフェイスのメソッド実装です。これらは一般に異なる動作をする可能性がありますが、PriorityQueue は制限されていないため、実質的な違いはありません。

出力

PriorityQueue は、次の要素を提供します。指定されたソート順。上記の例では、出力は次のようになります:

short
medium
very long indeed

以上がJava の PriorityQueue にカスタムの並べ替え順序を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。