String S = "aaaaaaaacabbbb";
if (S == null || S.length() == 0) {
return;
}
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());
System.out.println(pq);
所以,我明白对于这个特定的片段,最高优先级被赋予最大值的键,当我打印队列时,我得到
[a=9, b=4, c=1]
但是当我使用这个比较器时
PriorityQueue<Map.Entry<Character, Integer>> pq = new PriorityQueue<>((a, b) -> (a.getValue() - b.getValue()));
我不明白为什么它会给
[c=1, a=9, b=4]
我以为b会是第二个,而且a会是最后一个
第二个问题
另外,当我添加一个条目时
Map.Entry<Character, Integer> entry =
new java.util.AbstractMap.SimpleEntry<Character, Integer>('a', 5);
pq.offer(entry);
我得到这个输出
[c=1, a=5, b=4, a=9]
不明白a现在如何过去
慕的地6264312
相关分类