相关疑难解决方法(0)

java的PriorityQueue的内置迭代器不以任何特定顺序遍历数据结构.为什么?

这直接来自Java Docs:

该类及其迭代器实现了Collection和Iterator接口的所有可选方法.方法iterator()中提供的迭代器不保证以任何特定顺序遍历优先级队列的元素.如果需要有序遍历,请考虑使用Arrays.sort(pq.toArray()).

基本上,我的PriorityQueue工作正常,但是使用自己内置的toString()方法将其打印到屏幕上会让我看到这个异常现象,并且想知道是否有人可以解释为什么它是迭代器提供的(并且使用过)内部)不按自然顺序遍历PriorityQueue?

java priority-queue

11
推荐指数
1
解决办法
5047
查看次数

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