我有像
这样的地图 Jon 5.5
Susi 10.1
琳达10.1
Lora 4
伊万5
凯文10.1
我想找到最大值
的名字$('.toggle-addressform').click(function() {
$$('[name="create_address"]')[0].value = ($$('[name="create_address"]')[0].value)? 0:1;
$('telephone').toggleClassName('required-entry');
$('street_1').toggleClassName('required-entry');
$('city').toggleClassName('required-entry');
$('region_id').toggleClassName('validate-select');
$('region').toggleClassName('required-entry');
$('zip').toggleClassName('validate-zip-international');
$('zip').toggleClassName('required-entry');
$('country').toggleClassName('required-entry');
});
它不起作用 跆拳道?
答案 0 :(得分:1)
这很容易。只需将comparatpr用于Map.Entry
:
Map<String, Double> map = new HashMap<>();
map.put("Jon", 5.5);
map.put("Susi", 10.1);
map.put("Linda", 10.1);
map.put("Loar", 4.);
map.put("Ivan", 5.);
map.put("Kevin", 10.1);
map.entrySet().stream()
.sorted(Map.Entry.<String, Double>comparingByValue().reversed())
.forEach(System.out::println);
P.S。这是{strong>正确方式来比较double
Java
boolean equals = Double.compare(1.1, 2.2) == 0;
答案 1 :(得分:1)
虽然我无法重现您在代码中遇到的问题(我的猜测是您没有使用您认为正在使用的地图),但您可以简化代码并摆脱{{1只需获取地图中for
的{{1}},然后按max
进行比较即可。您可以将Entry
与特殊比较器一起使用......
value
...或使用Java 8 Stream API:
Collections.max
结果相同,即Entry<String, Double> max = Collections.max(map.entrySet(),
Comparator.comparing(Entry::getValue));
。如果您只想要名称,请使用Entry<String, Double> max = map.entrySet().stream()
.max(Comparator.comparing(Entry::getValue)).get();
。