我有一个Map<String, Integer>
映射“字”到它们在较大的原始String
中出现的次数。
我正在创建一个单词云,我需要首先渲染具有最多出现次数的单词,以确保在没有足够的空间来渲染它们之后它们不会被截断放置。
我尝试过这样的事情:
public static WordCounter getSortedWordCounter(WordCounter wordCounter) {
Map<String, Integer> sortedWordCountMap = wordCounter.getAll().entrySet().stream()
.sorted(Entry.comparingByValue(Comparator.reverseOrder()))
.limit(10)
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));
return new WordCounter(sortedWordCountMap);
}
这为我提供了前{10}个结果的WordCounter
,但由于Collectors.toMap
正在返回常规Map
,所以他们的顺序没有排序,而是随机的。
如果我尝试将stream()
的结果存储到LinkedHashMap<String, Integer>
中,它告诉我在静态上下文中不能使用Entry::getKey
或Entry::getValue
,因为{{1是静态的。