Java 有人能给我解释一下使用hashmap中的频率生成最大堆的符号吗?

Java 有人能给我解释一下使用hashmap中的频率生成最大堆的符号吗?,java,hashmap,priority-queue,Java,Hashmap,Priority Queue,//说S是一根弦;这将计算字符串中的字符频率,并将其放入名为map的hashmap中(我理解这一部分): Map Map=newhashmap(); for(char c:S.toCharArray()){ map.put(c,map.getOrDefault(c,0)+1); } 我需要帮助理解这段代码,据称它使用了映射的频率,并将其设置为最大堆优先级,但我根本不理解符号。另外,如果我们想让它成为一个最小堆(最少到最大的字符频率),那会是什么呢 PriorityQueue pq=newpri

//说S是一根弦;这将计算字符串中的字符频率,并将其放入名为map的hashmap中(我理解这一部分):

Map Map=newhashmap();
for(char c:S.toCharArray()){
map.put(c,map.getOrDefault(c,0)+1);
}
我需要帮助理解这段代码,据称它使用了映射的频率,并将其设置为最大堆优先级,但我根本不理解符号。另外,如果我们想让它成为一个最小堆(最少到最大的字符频率),那会是什么呢

PriorityQueue pq=newpriorityqueue((a,b)->map.get(b)-map.get(a));
或者,为了使其成为最大堆,我们可以做什么

PriorityQueue<Character> pq = new PriorityQueue<>(Collections.reverseOrder());
PriorityQueue pq=newpriorityqueue(Collections.reverseOrder());
??这样行吗

PriorityQueue<Character> pq = new PriorityQueue<>((a, b) -> map.get(b) - map.get(a));
PriorityQueue<Character> pq = new PriorityQueue<>(Collections.reverseOrder());