我已经研究过按值对 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/