java - 当添加一些随机元素时,PriorityQueue中的优先级如何确定?

标签 java data-structures priority-queue

当我在 PriorityQueue 中添加一些随机数时,当我打印 PriorityQueue 时,元素将以不同的顺序打印。

这是怎么发生的?

示例

    PriorityQueue<Integer> s=new PriorityQueue<Integer>();
            s.add(22);
            s.add(212);
            s.add(423);
            s.add(323);
            s.add(1);
            System.out.print(s);

output:
    [1, 22, 423, 323, 212]

最佳答案

toString() 返回优先级队列的内部存储的表示,而不是元素的逻辑顺序的表示。 toArray() 和迭代也是如此:这些方法都不能保证元素将按其优先级顺序返回。

如果你想按优先级顺序获取元素,你需要单独poll()它们(从而销毁队列)。因此,如果您想以特定顺序列出元素,则 PriorityQueue 不是合适的数据结构。 SortedSet 在这里更合适。相比之下,队列数据结构(其中 PriorityQueue 是一种特殊情况)用于接收和检索一次元素,而不是用于检查静态数据。

关于java - 当添加一些随机元素时,PriorityQueue中的优先级如何确定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66352536/

相关文章:

data-structures - 什么是词汇树以及如何构建它?

string - 构造trie的并行算法?

java - 处理线程池中的优先级

java - 在 Java 中实现接口(interface)实例列表的通用容器

data-structures - 实现 Tree : LinkedList - Array 的最佳方法是什么

c++ - error C2352 非法调用非静态成员函数

c - 排序链表(ADT优先级队列)

java - SFTP 无法处理名称包含星号的文件

java - 验证文件是否已在 Java 中复制

java - 将参数限制为某些已定义的常量