中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

如何處理priorityqueue中的重復元素

小樊
95
2024-09-03 01:27:01
欄目: 編程語言

在Java中,PriorityQueue 默認情況下不會刪除重復元素

  1. 使用自定義比較器(Comparator):

創建一個自定義比較器,根據對象的屬性或者其他標準來比較元素。這樣,即使兩個元素相等,它們也會根據指定的排序標準進行排序。

import java.util.*;

class CustomComparator implements Comparator<Integer> {
    @Override
    public int compare(Integer o1, Integer o2) {
        // 按照降序排列,如果需要升序排列,可以調換 o1 和 o2 的位置
        return o2 - o1;
    }
}

public class Main {
    public static void main(String[] args) {
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(new CustomComparator());
        priorityQueue.add(1);
        priorityQueue.add(5);
        priorityQueue.add(3);
        priorityQueue.add(1); // 重復元素

        while (!priorityQueue.isEmpty()) {
            System.out.println(priorityQueue.poll());
        }
    }
}
  1. 使用包裝類:

創建一個包裝類,將要添加到 PriorityQueue 的元素作為該類的屬性。然后,在包裝類中實現 Comparable 接口,并根據需要定義 compareTo() 方法。

import java.util.*;

class Element implements Comparable<Element> {
    int value;

    public Element(int value) {
        this.value = value;
    }

    @Override
    public int compareTo(Element other) {
        // 按照降序排列,如果需要升序排列,可以調換 this.value 和 other.value 的位置
        return other.value - this.value;
    }
}

public class Main {
    public static void main(String[] args) {
        PriorityQueue<Element> priorityQueue = new PriorityQueue<>();
        priorityQueue.add(new Element(1));
        priorityQueue.add(new Element(5));
        priorityQueue.add(new Element(3));
        priorityQueue.add(new Element(1)); // 重復元素

        while (!priorityQueue.isEmpty()) {
            System.out.println(priorityQueue.poll().value);
        }
    }
}

這兩種方法都可以處理 PriorityQueue 中的重復元素。選擇哪種方法取決于你的具體需求和應用場景。

0
赣榆县| 呼伦贝尔市| 文登市| 昌都县| 绥阳县| 巴青县| 嘉善县| 阿鲁科尔沁旗| 五大连池市| 逊克县| 临湘市| 交口县| 甘肃省| 舟曲县| 昭觉县| 星座| 咸丰县| 华蓥市| 石屏县| 新源县| 临漳县| 怀仁县| 长乐市| 于都县| 青岛市| 望奎县| 建水县| 长沙县| 呼伦贝尔市| 洞头县| 牟定县| 长葛市| 石景山区| 彰化县| 临清市| 南和县| 绥江县| 象山县| 远安县| 和静县| 左权县|