Java 为什么输出与预期不同 密码

Java 为什么输出与预期不同 密码,java,Java,从文档: PriorityQueue,具有默认初始容量(11),根据元素的自然顺序对其进行排序。 element()&peek返回队列的头。 在第一次迭代之后 amit amit amit vijay karan jai rahul karan jai rahul remove()&poll()->删除队列的头。 在第二次迭代之后,输出将是 Amit Jai Karan Vijay Rahul 它按预期工作 这都是关于优先队列的。 在优先级队列中,它存储在类似数组的数据结构中。例如,它存储为

从文档: PriorityQueue,具有默认初始容量(11),根据元素的自然顺序对其进行排序。 element()&peek返回队列的头。 在第一次迭代之后

amit amit amit vijay karan jai rahul
karan jai rahul
remove()&poll()->删除队列的头。 在第二次迭代之后,输出将是

Amit
Jai
Karan
Vijay
Rahul

它按预期工作

这都是关于优先队列的。 在优先级队列中,它存储在类似数组的数据结构中。例如,它存储为

Karan
Rahul
Vijay
始终零索引元素是顶部元素,当您查看或轮询第一个元素时,将轮询第一个元素,并根据此更改数组

在第一次remove调用之后,数组更改如下

[0] "Amit"
[1] "Jai"
[2] "Karan"
[3] "Vijay" 
[4] "Rahul"
再打一次电话后,

[0] "Jai"   
[1] "Rahul" 
[2] "Karan" 
[3] "Vijay" 

作为总结,顶部元素总是最小(或最大)的元素。弹出后,订单将更改。您可以阅读

上的详细信息。请缩进您的代码并编辑您的问题以包含输出。最好是显示您的代码,但也请添加一些文本(不在问题标题中),解释您试图实现的目标以及如何出错。此外,您的代码中似乎有虚假的

标记,使用缩进?Ugur可能会使代码更可读Basak@i我同意你的看法,但是你是如何建立索引的。第一次你把“rahul”放在底部为什么?Rakesh,实际上我是用Eclipse的变量视图得到这个值的。此外,此动画还可以帮助您查看在每次插入时,通过交换值,“最大/最小”值试图到达顶部索引时,后端的情况如何。每次交换都是在到达阵列的下一半时进行的。对于Rahul,Rahul被添加到第5个索引中,我们将其与第2个索引进行比较,第2个索引比Rahul小,我们不进行交换操作。但是如果它比第二个小,那么我们也需要交换它。您有两个选择,如果您将其用作maxheap,则最上面的一个将是最大值,否则它将是最小值。它可以帮助您在O(1)时间内检索最高值。有关更多详细信息,您也可以查看
[0] "Jai"   
[1] "Rahul" 
[2] "Karan" 
[3] "Vijay" 
[0] "Karan" 
[1] "Rahul" 
[2] "Vijay"