如何获取LinkedHashMap <string,integer =“”>按未排序的Map <string,integer =“”>的值排序

时间:2016-07-15 15:22:50

标签: java sorting hashmap java-stream linkedhashmap

我有一个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::getKeyEntry::getValue,因为{{1是静态的。

0 个答案:

没有答案