[ACCEPTED]-Get max key of Map<K,V> using lambda-java-8
Accepted answer
The interface Stream
contains the method max
to get 5 the maximum element. You can use a method 4 reference as Comparator
. The method max
returns an Optional<Float>
, because 3 there is no maximum element in an empty 2 stream. You can use the method orElse
to provide 1 an alternative value for this case.
float max = map.keySet().stream().max(Float::compareTo).orElse(0.0f);
There's a more direct solution than operating 6 on the keySet(); operate directly on the 5 entrySet() using the comparator factories 4 added to Map.Entry
.
Map.Entry<K,V> maxElt = map.entrySet().stream()
.max(Map.Entry.comparingByKey())
.orElse(...);
This permits not only getting 3 min/max elements, but also sorting, so its 2 easy to find the top ten key/value pairs 1 like this:
Stream<Map.Entry<K,V>> topTen = map.entrySet().stream()
.sorted(Map.Entry.byKeyComparator().reversed())
.limit(10);
Source:
stackoverflow.com
More Related questions
Cookie Warning
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.