プライオリティキューをカスタムソートする方法は何ですか?

PriorityQueueをカスタマイズするには、Comparator インタフェースを実装し、その中のcompare()メソッドをオーバーライドする必要があります。Comparatorインタフェースを使用すると、要素間の比較ロジックを定義することができます。その後、カスタムComparatorオブジェクトをPriorityQueueのコンストラクタにパラメータとして渡すことができます。

以下是一个示例,展示如何使用PriorityQueue进行自定义排序:

import java.util.Comparator;
import java.util.PriorityQueue;

public class PriorityQueueCustomSorting {
    public static void main(String[] args) {
        // 创建自定义的Comparator对象
        Comparator<Integer> customComparator = new Comparator<Integer>() {
            @Override
            public int compare(Integer num1, Integer num2) {
                // 根据数字的绝对值进行比较
                return Integer.compare(Math.abs(num1), Math.abs(num2));
            }
        };

        // 创建PriorityQueue并传入自定义的Comparator对象
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(customComparator);

        // 添加元素到PriorityQueue
        priorityQueue.add(-10);
        priorityQueue.add(5);
        priorityQueue.add(-3);
        priorityQueue.add(8);

        // 输出PriorityQueue中的元素
        while (!priorityQueue.isEmpty()) {
            System.out.println(priorityQueue.poll());
        }
    }
}

上記の例では、数字の絶対値に基づいて比較を行うカスタムComparatorオブジェクトを作成しました。その後、PriorityQueueを作成し、カスタムComparatorオブジェクトをそのコンストラクタに渡しました。最後に、いくつかの要素をPriorityQueueに追加し、poll()メソッドを使用してカスタムソート順でそれらの要素を順番に取得して出力しました。

上記のコードを実行すると、次の結果が出力されます。

-3
5
-10
8

PriorityQueue内の要素は、カスタムされた並び順に従って並べられています。

bannerAds