温馨提示×

priorityqueue java怎样处理重复元素

小樊
81
2024-11-16 03:00:21
栏目: 编程语言

在Java中,PriorityQueue默认情况下不允许重复元素。但是,你可以通过实现Comparator接口来自定义比较规则,从而实现处理重复元素的目的。下面是一个使用自定义比较器处理重复元素的示例:

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

public class PriorityQueueWithDuplicates {
    public static void main(String[] args) {
        // 创建一个包含重复元素的整数列表
        Integer[] elements = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};

        // 使用自定义比较器创建一个优先队列
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                // 如果两个元素相等,返回0(表示它们可以被认为是重复的)
                if (o1.equals(o2)) {
                    return 0;
                }
                // 否则,使用默认的比较规则
                return o1 - o2;
            }
        });

        // 将元素添加到优先队列中
        for (Integer element : elements) {
            priorityQueue.add(element);
        }

        // 从优先队列中删除并打印元素
        while (!priorityQueue.isEmpty()) {
            System.out.println(priorityQueue.poll());
        }
    }
}

在这个示例中,我们创建了一个包含重复元素的整数列表,并使用自定义比较器创建了一个优先队列。当两个元素相等时,比较器返回0,这意味着它们可以被认为是重复的。最后,我们从优先队列中删除并打印元素。

0