java里面PriorityQueue的用法
时间: 2023-05-26 21:06:24 浏览: 108
Java优先队列(PriorityQueue)示例Java
PriorityQueue是Java中的一种实现了优先队列的数据结构。它是一个队列,具有能够优先处理队列中元素的特性。PriorityQueue使用堆来实现其内部容器,保证最小的元素总是在队首,可以用来实现一些贪心算法和Dijkstra最短路径算法等。
PriorityQueue有两个主要的构造函数:
1. PriorityQueue():创建一个空的PriorityQueue。
2. PriorityQueue(Collection c):使用集合c元素初始化PriorityQueue,支持所有Collection的操作。
PriorityQueue有以下常用方法:
1. add(E e):将元素e插入到PriorityQueue中。
2. offer(E e):将元素e插入到PriorityQueue中。
3. peek():获取队列头部的元素,但不移除队列中的元素。
4. poll():获取并移除队列头部的元素。
5. remove(Object o):从队列中移除元素o。
6. contains(Object o):判断队列中是否包含元素o。
7. size():返回队列的大小。
示例:
```
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.add(1);
pq.add(2);
pq.add(3);
System.out.println(pq.peek()); //输出1
pq.poll();
System.out.println(pq.peek()); //输出2
System.out.println(pq.contains(3)); //输出true
```
在上面的代码中,我们创建了一个PriorityQueue,并使用add()方法将三个元素1,2,3插入到队列中。然后我们使用peek()方法获取队列头部的元素并输出结果为1,然后我们使用poll()方法获取并移除队列头部的元素,并再次使用peek()方法获取队列头部的元素,并输出结果为2。最后我们使用contains()方法检查队列中是否包含元素3,并输出结果为true。
阅读全文