Java中使用size()方法遍历PriorityQueue出现元素不全的问题

12 篇文章 0 订阅

在使用PriorityQueue类时

使用

for(int i=0; i<priorityqueue.size(); i++)
for(int i : priorityqueue)
遍历PriorityQueue时

有时会出现PriorityQueue未能正常排序

甚至是size()方法未能正确返回PriorityQueue的大小的问题

具体为什么会出现这个问题我也不是很清楚

但是如果我们能用

while(!priorityqueue.isEmpty()){
 priorityqueue.poll()
}
 就不会出现这种问题 

示例代码:

int temp2 = -1;
		for(int i=0; i<m; i++) {
			if(temp2 != people3.peek()) {
				temp2 =people3.peek();
			}else {
				people3.poll();
				continue;
			}
			for(Person person2 : persons) {
				if(person2.score == people3.peek()) {
					int w = person2.id.size();
					while(!person2.id.isEmpty()) {
						System.out.println(person2.id.poll() + " " +  person2.score);
					}
					people3.poll();
					break;
				}
			}
		}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: Java PriorityQueue 的 `size()` 方法可以返回队列元素的个数。该方法的时间复杂度为 O(1)。以下是一个示例代码: ```java PriorityQueue<Integer> pq = new PriorityQueue<>(); pq.offer(4); pq.offer(1); pq.offer(3); int size = pq.size(); // 返回 3 ``` ### 回答2: JavaPriorityQueue是一个带有优先级的队列,它的size()方法用于返回PriorityQueue元素的个数。 在PriorityQueue元素是根据其优先级进行排序的。优先级可以是自然排序或者通过Comparator进行指定。优先级较高的元素在队列的前面,优先级较低的元素在队列的后面。当我们向PriorityQueue添加元素时,元素会根据其优先级被正确地插入到合适的位置,从而保持队列的有序性。 size()方法返回PriorityQueue元素的个数。当我们调用size()方法时,它会遍历整个PriorityQueue并计算元素的数量,然后将数量作为结果返回。 以下是一个简单的示例代码,演示了如何使用PriorityQueue以及如何获取其大小: ``` import java.util.PriorityQueue; public class PriorityQueueExample { public static void main(String[] args) { PriorityQueue<Integer> pq = new PriorityQueue<>(); // 添加元素PriorityQueue pq.add(5); pq.add(2); pq.add(8); pq.add(1); // 获取PriorityQueue的大小 int size = pq.size(); System.out.println("PriorityQueue元素个数:" + size); } } ``` 运行以上代码,将输出: ``` PriorityQueue元素个数:4 ``` 以上就是关于Java PriorityQueuesize()方法的解释和用法。通过使用size()方法,我们可以轻松地获取PriorityQueue元素的个数。 ### 回答3: JavaPriorityQueue是一个基于优先级堆的无界队列。它具有以下特点: 1. PriorityQueuesize方法返回队列元素的个数。它的时间复杂度是O(1),因为PriorityQueue内部维护了一个变量来记录元素的个数,每次操作都会实时更新。 2. 当队列为空时,size方法返回0。通过与其他集合类的方法(如isEmpty方法)结合使用,可以判断PriorityQueue是否为空。 3. PriorityQueue元素是根据它们的优先级进行排列的,具有较高优先级的元素会在队列的较低优先级元素之前被处理。优先级的比较可以通过元素自身的比较器(Comparator)来定义,或者根据元素的自然顺序进行比较。 4. PriorityQueue的插入和删除操作的时间复杂度为O(log n),其n是队列元素个数。插入操作会根据元素的优先级将元素插入到合适的位置,删除操作会移除队列的第一个元素(具有最高优先级)。 综上所述,PriorityQueuesize方法可以方便地用来获取队列元素的个数。它对于判断队列是否为空以及对队列的容量进行限制判断非常有用。该方法的时间复杂度为O(1),并且与队列元素的个数无关。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值