[英]How to fetch first 10 key value HashMap in Java
我有这样的哈希图:
{apple, 20}, {nanas,18}, {anggur, 12},...........
我的哈希图已经按值降序排序。 我想从第一个元素哈希图中获取 10 个元素。
谁能帮我 ?
如果您使用 java 8,我会选择:
List<MyKeyType> keys = map.entrySet().stream()
.map(Map.Entry::getKey)
.sorted()
.limit(10)
.collect(Collectors.toList());
这个怎么运作:
sorted() 方法采用可选的 Comparator 参数,如果需要,您可以在其中提供自定义排序逻辑。
由于您的地图已经排序,我们可以获得前 10 个键值作为新地图,如下所示:
Map<String, Integer> res = map.entrySet().stream()
.limit(10)
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));
如果您的地图未排序,我们可以使用:
Map<String, Integer> res = map.entrySet().stream()
.sorted((o1, o2) -> o2.getValue() - o1.getValue())
.limit(10)
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));
您需要使用LinkedHashMap来保留元素的顺序(即插入顺序),您可以参考以下代码从加载的地图对象中检索前 10 个元素:
Map<String, Integer> map = new LinkedHashMap<>();
//Load your values here
Set<String> keys = map.keySet();
String[] keysArray = keys.toArray(new String[keys.size()]);
for(int i=0; i<keysArray.length && i<10;i++) {
System.out.println(map.get(keysArray[i]));
}
将地图的entrySet()
取出到一个列表中,通过getValue()
对其进行排序,并取值最大的 10 个条目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.