gpt4 book ai didi

java - 迭代 PriorityQueue 不会产生有序结果

转载 作者:行者123 更新时间:2023-11-30 03:59:50 25 4
gpt4 key购买 nike

import java.util.*;
class Priority{
public static void main(String args[]){

PriorityQueue<String> queue=new PriorityQueue<String>();
queue.add("Amit");
queue.add("Vijay");
queue.add("Karan");
queue.add("Jai");
queue.add("Rahul");

System.out.println("head:"+queue.element());
System.out.println("head:"+queue.peek());

System.out.println("iterating the queue elements:");
Iterator itr=queue.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}

queue.remove();
queue.poll();

System.out.println("after removing two elements:");
Iterator itr2=queue.iterator();
while(itr2.hasNext()){
System.out.println(itr2.next());
}

}
}

Output:head:Amit
head:Amit
iterating the queue elements:
Amit
Jai
Karan
Vijay
Rahul
after removing two elements:
Karan
Rahul
Vijay

您好,我正在尝试学习优先级队列,它属于java中的集合(如上所示)。现在我真的很困惑,因为输出。我无法理解输出是如何产生的(如上所示)。

iterating the queue elements:
Amit
Jai
Karan
Vijay
Rahul

Vijay 是如何排在 rahul 之前的?如果按字母顺序排列,我猜拉胡尔一定排在维杰之前。

那么谁能解释一下程序内部发生了什么以及方法 element() 它的作用是什么?我找不到那个方法。

最佳答案

PriorityQueue 不按排序顺序存储元素,但它允许您按排序顺序从中获取元素。它只是确保头部的元素是按照其使用的顺序的最小元素。

因此,如果您存储多个数字 - 2, 1, 4, 3, 6, 8,它将确保 1 是您删除的下一个元素。然后,当您删除 1 时,它会将 2 移动到头部。它不关心其余元素的顺序。

关于java - 迭代 PriorityQueue 不会产生有序结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22229154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com