溫馨提示×

如何自定義priorityqueue的比較器

小樊
84
2024-09-03 01:30:06
欄目: 編程語言

在Java中,要自定義PriorityQueue的比較器,您需要創(chuàng)建一個(gè)實(shí)現(xiàn)Comparator接口的類,并重寫compare方法

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

public class CustomComparatorExample {
    public static void main(String[] args) {
        // 使用自定義比較器創(chuàng)建優(yōu)先隊(duì)列
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(new CustomComparator());

        // 添加元素到優(yōu)先隊(duì)列
        priorityQueue.add(10);
        priorityQueue.add(20);
        priorityQueue.add(5);
        priorityQueue.add(15);

        // 從優(yōu)先隊(duì)列中取出元素并打印
        while (!priorityQueue.isEmpty()) {
            System.out.println(priorityQueue.poll());
        }
    }
}

class CustomComparator implements Comparator<Integer> {
    @Override
    public int compare(Integer o1, Integer o2) {
        // 自定義比較規(guī)則,例如這里我們將數(shù)字按照降序排列
        return o2 - o1;
    }
}

在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為CustomComparator的類,該類實(shí)現(xiàn)了Comparator接口。我們重寫了compare方法,使其按照降序排列整數(shù)。然后,我們使用這個(gè)自定義比較器創(chuàng)建了一個(gè)PriorityQueue,并向其中添加了一些整數(shù)。最后,我們從優(yōu)先隊(duì)列中取出元素并打印,可以看到它們按照降序排列。

您可以根據(jù)需要修改compare方法中的比較規(guī)則,以實(shí)現(xiàn)自定義的排序順序。

0