相关疑难解决方法(0)

在Java中对优先级队列进行排序

我试图插入整数PriorityQueue,我知道:

如果在PriorityQueue构造a时未指定比较器,则使用存储在队列中的数据类型的默认比较器.默认比较器将按升序对队列进行排序

但是,我得到的输出不是按排序顺序.运行以下代码后的输出是:[2, 4, 8, 6]

public static void main(String args[]) {
    PriorityQueue<Integer> q = new PriorityQueue<Integer>(10);
    q.offer(4);
    q.offer(2);
    q.offer(8);
    q.offer(6);

    System.out.print(q);
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下原因吗?

java priority-queue

15
推荐指数
2
解决办法
4万
查看次数

PriorityQueue.toString错误的元素顺序

我试图在java中使用优先级最低的节点创建优先级队列.但是,我的比较器不工作,输出非常奇怪.我相信我需要改变我的比较器,但我不知道如何改变它.这是我的代码:

public class HuffmanComparator implements Comparator<TreeNodeHuffman> {
    public int compare(TreeNodeHuffman p1, TreeNodeHuffman p2) {
        if (p1.frequency < p2.frequency) return -1;
        if (p1.frequency > p2.frequency) return 1;
        return 0;
    }    
}

public class TreeNodeHuffman {
public static void main(String[] args) {    
    HuffmanComparator compare = new HuffmanComparator();
    TreeNodeHuffman e = new TreeNodeHuffman('e', 12702);
    TreeNodeHuffman t = new TreeNodeHuffman('t', 9056);
    TreeNodeHuffman a = new TreeNodeHuffman('a', 8167);
    TreeNodeHuffman o = new TreeNodeHuffman('o', 7507);
    TreeNodeHuffman i = new TreeNodeHuffman('i', 6966);
    TreeNodeHuffman n = new TreeNodeHuffman('a', …
Run Code Online (Sandbox Code Playgroud)

java printing sorting priority-queue comparator

10
推荐指数
2
解决办法
2353
查看次数

标签 统计

java ×2

priority-queue ×2

comparator ×1

printing ×1

sorting ×1