如何按Map <string,integer =“”> </string,>的值递减顺序获得前10个键

时间:2013-09-30 16:05:49

标签: java

map.put("Tom",5);
map.put("Tim",2);
map.put("Ted",4);

然后我可以广播它:

Tom is 5
Ted is 4
Tim is 2

我怎么能这样做?我是编码的初学者,请不要那么刻苦地惩罚我。

2 个答案:

答案 0 :(得分:10)

您可以尝试这样的事情:

List<Entry<String, Integer>> l = new ArrayList<>(map.entrySet());

Collections.sort(l, new Comparator<Entry<?, Integer>>() {
    @Override
    public int compare(Entry<?, Integer> a, Entry<?, Integer> b) {
        return b.getValue().compareTo(a.getValue());  // reverse order
    }
});

for (int i = 0; i < 10; i++) {
    Entry<String, Integer> e = l.get(i);
    System.out.println(e.getKey() + " is " + e.getValue());
}

<强>参考:

答案 1 :(得分:0)

您可以使用TreeMap并在构造函数中传递Comparator,使您的条目按所需顺序排列,然后迭代entrySet

相关问题