优先级队列是一种不错的方法 – 您需要做的就是从映射中获取
get the Entry set,并覆盖Comparator作为队列的输入.
Map map = new HashMap();
map.put('a',1);
map.put('c',10);
map.put('p',5);
map.put('2',7);
PriorityQueue> pq = new PriorityQueue>(map.size(), new Comparator>() {
@Override
public int compare(Entry arg0,
Entry 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
注意:避免使用带有键的Set或Map作为地图的值 – 因为它不会很好地处理重复值.