按值对 AtomicLongMap 进行排序

Sort AtomicLongMap by value

我正在使用 guava AtomicLongMap 来计算文档中的短语数。

AtomicLongMap frequentPhrases = AtomicLongMap.create();
frequentPhrases.getAndIncrement(phrase.trim());

一切都很顺利,但我找不到按出现次数对 Map 进行排序的方法。

您可以将条目保存到 List,然后按条目的值以相反的顺序对其进行排序:

List<Map.Entry<Object, Long>> sorted = 
    new ArrayList<>(frequentPhrases.asMap().entrySet());
Collections.sort(sorted, Collections.reverseOrder(Map.Entry.comparingByValue()));

for (Map.Entry<Object, Long> entry : sorted) {
    System.out.println(entry); // Or something more useful
}