java - 在已排序的 HashMap 中选择顶部 'n' 条目

标签 java sorting hashmap

我已经研究过按值对 HashMap 进行排序 here但我不太确定如何提取此排序的 HashMap 的前“n”个条目。还是有更好的方法来实现这一点?

为了提供一些概述,我正在从事一个 P2P 项目,我在 peerID 和可以从每个对等点下载文件的相应速率之间维护一个映射。然后我需要选择下载率最高的前“n”个对等点。

最佳答案

显然,带有自定义比较器的 TreeMap 会是更好的选择,尤其是因为它有一个专门为此量身定制的方法:headMap(Key k) 它将为您提供到此 key 的所有条目。

另一方面,如果您坚持使用 HashMap,您可以为此使用 java-8:

yourMap.entrySet()
       .stream()
       .sorted(Comparator.comparing(e -> e.getValue(), Comparator.reverseOrder()))
       .limit(n)
       .collect(Collectors.toMap(Entry::getKey, Entry::getValue));

关于java - 在已排序的 HashMap 中选择顶部 'n' 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47445878/

相关文章:

java ArrayList 获取最大值

java - Spring Cron验证

java - solr.extraction.ExtractingRequestHandler ClassNotFoundException

java - Hibernate 在 emddable websphere 容器中找不到 java :comp/websphere/ExtendedJTATransaction

java - Java进度条不更新

python - 应该将学生分类为类(class)角色的代码错误

sorting - -g 选项打破保守的linux排序

c# - SQL Server 匹配单词短语和顺序相关性的最佳方法

java - 倒排索引实现的不同数据结构

java - 将 HashMap 转换为数组