地图,找到所有最大值

时间:2017-11-03 16:18:11

标签: java

我有像

这样的地图

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');
});

它不起作用 跆拳道?

enter image description here

2 个答案:

答案 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();