priorityqueue java从大到小排序
时间: 2023-11-05 13:05:14 浏览: 39
PriorityQueue在默认情况下是按照自然排序,也就是从小到大排序的。如果你想实现从大到小的排序,可以使用comparator类来重写compare方法来实现定制排序。具体代码如下:
```java
import java.util.PriorityQueue;
import java.util.Comparator;
public class PriorityQueueTest {
public static void main(String[] args) {
PriorityQueue<Integer> pq = new PriorityQueue<>(new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
pq.offer(6);
pq.offer(-3);
pq.offer(0);
pq.offer(9);
while (!pq.isEmpty()) {
System.out.print(pq.poll() + " ");
}
}
}
```
相关问题
priorityqueue java从小到大排序
PriorityQueue在Java中默认是按照自然排序(从小到大)进行排序的。这意味着,当你往PriorityQueue中添加元素时,它们会根据元素的大小自动进行排序。你可以使用以下代码来演示PriorityQueue的从小到大排序:
```java
import java.util.PriorityQueue;
public class PriorityQueueTest {
public static void main(String[] args) {
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.offer(6);
pq.offer(-3);
pq.offer(0);
pq.offer(9);
while (!pq.isEmpty()) {
System.out.print(pq.poll() + " ");
}
System.out.println();
}
}
```
这段代码将输出:-3 0 6 9,这就是PriorityQueue从小到大排序的结果。
PriorityQueue设置初始大小
在 Java 中,PriorityQueue 是一个基于优先级堆的无界优先级队列。它可以自动根据元素的优先级进行排序,并且允许快速访问具有最高优先级的元素。
在创建 PriorityQueue 对象时,你可以选择设置初始大小。初始大小是指队列最初的容量,即可以存储的元素数量。
你可以使用以下构造方法来创建一个具有特定初始大小的 PriorityQueue 对象:
```java
PriorityQueue<E> queue = new PriorityQueue<>(initialCapacity);
```
其中,`E` 是队列中元素的类型,`initialCapacity` 是你要设置的初始大小。
需要注意的是,初始大小只是一个提示,并不是严格限制队列的容量。实际上,PriorityQueue 的容量会根据需要自动进行扩展。
如果你不确定初始大小,或者不想手动设置初始大小,可以使用默认构造方法创建 PriorityQueue 对象:
```java
PriorityQueue<E> queue = new PriorityQueue<>();
```
这样会使用默认的初始大小(通常是 11),并且在需要时自动进行扩展。
总而言之,设置初始大小是可选的,如果你知道大致的元素数量,设置一个较大的初始大小可以提高性能。否则,使用默认构造方法即可。