Я хочу сделать максимальную кучу на Java, но не мог этого понять. Может кто-то объяснить это мне
Вопрос. Получив строку, отсортируйте ее в порядке убывания частоты символов.
Вход = "дерево"
Ожидаемый результат: "eetr"
Поэтому мне нужна максимальная куча с использованием Priority Queue, но я не понял, как работает этот код. Как работает объявление Priority Queue?
public class Solution {
public String frequencySort(String s) {
Map<Character, Integer> map = new HashMap<>();
for (char c : s.toCharArray())
map.put(c, map.getOrDefault(c, 0) + 1);
PriorityQueue<Map.Entry<Character, Integer>> pq = new PriorityQueue<>((a, b) -> b.getValue() - a.getValue());
pq.addAll(map.entrySet());
StringBuilder sb = new StringBuilder();
while (!pq.isEmpty()) {
Map.Entry e = pq.poll();
for (int i = 0; i < (int)e.getValue(); i++)
sb.append(e.getKey());
}
return sb.toString();
}
}
так хочу знать как это
new PriorityQueue<>((a, b) -> b.getValue() - a.getValue());
вещь работает для создания приоритетной очереди.