按值对 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
}
我正在使用 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
}