我使用的函数返回LinkedHashMap中的键值对。
LinkedHashMap<Integer,String> lhm = new LinkedHashMap<Integer,String>();
// Put elements to the map
lhm.put(10001, "Stack");
lhm.put(10002, "Heap");
lhm.put(10003, "Args");
lhm.put(10004, "Manus");
lhm.put(10005, "Zorat");
注意:我无法将LinkedHashMap更改为代码中的任何其他映射,因为该函数正在其他几个函数中使用。
我也在谷歌上搜索并尝试使用TreeMap,它以升序给出我们想要的结果。但是,在树映射中,键是按升序排列的,而不是值。
我的要求主要是价值观。
如何按升序获取值。
Desired Output
10003, "Args"
10002, "Heap"
10004, "Manus"
10001, "Stack"
10005, "Zorat"
提前谢谢!!!!
lhm.entrySet().stream()
.sorted(Map.Entry.comparingByValue().reversed())
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));
这将按升序对地图进行排序。
您可以通过流来实现这一点:
lhm.entrySet().stream().sorted(Map.Entry.comparingByValue())
.forEach( (e)->System.out.println(e.getKey() + ", " + e.getValue()) );
上面会打印出你想要的内容。
你需要一个比较器
Comparator<Entry<String, String>> valueComparator = new
Comparator<Entry<String,String>>() {
@Override public int compare(Entry<String, String> e1, Entry<String,
String> e2) {
String v1 = e1.getValue(); String v2 = e2.getValue(); return
v1.compareTo(v2);
}
};
我知道,要获取地图,我可以使用fetchMap,但它不支持LinkedHashMap,我想保持由orderBy创建的插入顺序。 我试过了 但是字段1和字段2部分给了我以下错误。 无法解析“T”中的方法“field1” 希望有人能帮我~ 谢谢 解决方案: 基于@Lukas的回答,我尝试了几次,发现必须做到以下几点: > 在方法中,所有字段都必须有一个类型,除了那些计算的,其中添加类型会抛出在字段列表
我有一个问题:我的HashMap看起来像: 我想对这个hashmap进行排序,结果成功了!返回。我想要的是得到最好的‘价值’的钥匙。最好的'values'是最小的数字,在本例中为-1。是否可以在中返回键?例如,如果最佳值是3,它出现了5次,它应该把5个键还给我。仅等于一个最佳值。我怎么能那么做?
我有一个方法,它应该从JSON返回不同的对象,这取决于参数中的类类型。我试着根据参数返回一个对象列表,但是我只把LinkedHashMap放入ArrayList。 我搜索了很多,但是在解决方案中,类类型的所有地方都是硬编码的。 有没有一种不用硬代码就能解决这个问题的方法? 我只想传递类类型并通过一个方法获取对象。 当我的对象有关系时,我得到这个例外 无法识别的字段"字段"(类model.orm.部
问题内容: 可以按升序对它进行排序: 如何按降序排列? 问题答案: 要以相反顺序排序,请将作为参数传递给。 要获取a ,您必须明确要求使用4参数。如果您未指定所需的地图类型,则将获得默认值,而默认值是。由于不保留元素的顺序,因此绝对不会为您服务。 使用静态导入,它将变得更加令人愉快:
要按升序对其进行int排序,我可以使用: 我怎样才能按照递减的顺序来做呢?