1. ホーム
  2. java

[解決済み] priorityQueueをmax priorityqueueに変更する。

2022-03-02 04:45:24

質問

Javaで整数の優先キューを持っています。

 PriorityQueue<Integer> pq= new PriorityQueue<Integer>();

を呼び出すと pq.poll() 最小の要素を取得します。

質問:最大の要素を取得するためにコードを変更するにはどうすればよいですか?

どのように解決するのですか?

こんな感じでどうでしょう。

PriorityQueue<Integer> queue = new PriorityQueue<>(10, Collections.reverseOrder());
queue.offer(1);
queue.offer(2);
queue.offer(3);
//...

Integer val = null;
while( (val = queue.poll()) != null) {
    System.out.println(val);
}

Collections.reverseOrder() を提供します。 Comparator の要素をソートするようなものです。 PriorityQueue を、この場合の自然な順序とは逆の順序で指定します。