gpt4 book ai didi

java - 看不懂Priority Queue流程

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:16 24 4
gpt4 key购买 nike

<分区>

        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是怎么过去的

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com