/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.stream.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
put("A", 0.0);
put("B", 3.14);
put("C", 3.14);
put("D", 8.8);
put("E", 2.1);
put("F", 1.01);
}};
System.
out.
println("answer= " + getTopN
(map,
3).
toString()); }
static List
<String
> getTopN
(Map
<String, Double
> map,
int n
) {
TreeSet
<Map.
Entry<String, Double
>> topN
= new TreeSet
<>( .reversed() // by value descending, then by key
.
thenComparing(Map.Entry::getKey
)); // to allow entries with repeated values
map.entrySet().forEach(e -> {
topN.add(e);
if (topN.size() > n) topN.pollLast();
});
return topN.stream()
.collect(Collectors.toList());
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCU1hcDxTdHJpbmcsIERvdWJsZT4gbWFwID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBEb3VibGU+KCkge3sKICAgICAgcHV0KCJBIiwgMC4wKTsKICAgICAgcHV0KCJCIiwgMy4xNCk7CiAgICAgIHB1dCgiQyIsIDMuMTQpOwogICAgICBwdXQoIkQiLCA4LjgpOwogICAgICBwdXQoIkUiLCAyLjEpOwogICAgICBwdXQoIkYiLCAxLjAxKTsKICAgIH19OwogICAgU3lzdGVtLm91dC5wcmludGxuKCJhbnN3ZXI9ICIgKyBnZXRUb3BOKG1hcCwgMykudG9TdHJpbmcoKSk7Cgl9CgpzdGF0aWMgTGlzdDxTdHJpbmc+IGdldFRvcE4oTWFwPFN0cmluZywgRG91YmxlPiBtYXAsIGludCBuKSB7CgogICAgVHJlZVNldDxNYXAuRW50cnk8U3RyaW5nLCBEb3VibGU+PiB0b3BOID0gbmV3IFRyZWVTZXQ8PigKICAgICAgICBNYXAuRW50cnkuPFN0cmluZywgRG91YmxlPmNvbXBhcmluZ0J5VmFsdWUoKQogICAgICAgICAgICAucmV2ZXJzZWQoKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSB2YWx1ZSBkZXNjZW5kaW5nLCB0aGVuIGJ5IGtleQogICAgICAgICAgICAudGhlbkNvbXBhcmluZyhNYXAuRW50cnk6OmdldEtleSkpOyAvLyB0byBhbGxvdyBlbnRyaWVzIHdpdGggcmVwZWF0ZWQgdmFsdWVzCgogICAgbWFwLmVudHJ5U2V0KCkuZm9yRWFjaChlIC0+IHsKICAgICAgdG9wTi5hZGQoZSk7CiAgICAgIGlmICh0b3BOLnNpemUoKSA+IG4pIHRvcE4ucG9sbExhc3QoKTsKICAgIH0pOwoKICAgIHJldHVybiB0b3BOLnN0cmVhbSgpCiAgICAgICAgLm1hcChNYXAuRW50cnk6OmdldEtleSkKICAgICAgICAuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKTsKfQkKfQ==