gpt4 book ai didi

java - 使用值对 map 进行排序的最佳方法

转载 作者:搜寻专家 更新时间:2023-11-01 03:09:27 26 4
gpt4 key购买 nike

private Map<Character, Integer> frequencies;

我有一个 Map,其中 Character 是 Key,其关联的 Integer 是 Value。

按值排序的最佳/最快/有效方法是什么?

即 map 可能有
一,1
c,10
p,5
s,7
排序后,会是
一,1
p,5
s,7
c,10

我正在考虑用优先队列和整数来做,但如果整数值重复,我会丢失字符值

最佳答案

优先队列是一种不错的方法 - 您需要做的就是 get the Entry set来自 map ,并覆盖 Comparator 作为队列的输入。

Map<Character,Integer> map = new HashMap<Character, Integer>();
map.put('a',1);
map.put('c',10);
map.put('p',5);
map.put('2',7);
PriorityQueue<Entry<Character, Integer>> pq = new PriorityQueue<Map.Entry<Character,Integer>>(map.size(), new Comparator<Entry<Character, Integer>>() {

@Override
public int compare(Entry<Character, Integer> arg0,
Entry<Character, Integer> arg1) {
return arg0.getValue().compareTo(arg1.getValue());
}
});
pq.addAll(map.entrySet());
while (!pq.isEmpty()) {
System.out.println(pq.poll());
}

将产生(如预期):

a=1
p=5
2=7
c=10

注意:避免使用带有键的SetMap 作为映射的值 - 因为它不能很好地处理重复值.

关于java - 使用值对 map 进行排序的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13674871/

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