/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone {
HashMap
<String ,Double
> map
= new HashMap
<String ,Double
>(); ValueComparator bvc = new ValueComparator(map);
TreeMap
<String, Double
> sortedMap
= new TreeMap
<String ,Double
>(bvc
);
map.put("A",99.5);
map.put("B",67.4);
map.put("C",67.4);
map.put("D",67.3);
System.
out.
println("unsorted map: "+map
);
sortedMap.putAll(map);
System.
out.
println("sorted map: "+ sortedMap
);
System.
out.
println("Highest value: " + sortedMap.
firstEntry().
getValue().
toString());
System.
out.
println("Lowest value: "+ sortedMap.
lastEntry().
getValue().
toString()); }
}
class ValueComparator implements Comparator<String> {
private Map
<String, Double
> base
;
public ValueComparator
(Map
<String, Double
> base
) { this.base = base;
}
if (base.get(a) >= base.get(b)) {
return -1;
} else {
return 1;
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBJZGVvbmUgewoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24gewoKICAgICAgICBIYXNoTWFwPFN0cmluZyAsRG91YmxlPiBtYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcgLERvdWJsZT4oKTsKICAgICAgICBWYWx1ZUNvbXBhcmF0b3IgYnZjID0gIG5ldyBWYWx1ZUNvbXBhcmF0b3IobWFwKTsKICAgICAgICBUcmVlTWFwPFN0cmluZywgRG91YmxlPiBzb3J0ZWRNYXAgPSBuZXcgVHJlZU1hcDxTdHJpbmcgLERvdWJsZT4oYnZjKTsKCiAgICAgICAgbWFwLnB1dCgiQSIsOTkuNSk7CiAgICAgICAgbWFwLnB1dCgiQiIsNjcuNCk7CiAgICAgICAgbWFwLnB1dCgiQyIsNjcuNCk7CiAgICAgICAgbWFwLnB1dCgiRCIsNjcuMyk7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigidW5zb3J0ZWQgbWFwOiAiK21hcCk7CgogICAgICAgIHNvcnRlZE1hcC5wdXRBbGwobWFwKTsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJzb3J0ZWQgbWFwOiAiKyBzb3J0ZWRNYXApOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhpZ2hlc3QgdmFsdWU6ICIgKyBzb3J0ZWRNYXAuZmlyc3RFbnRyeSgpLmdldFZhbHVlKCkudG9TdHJpbmcoKSk7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTG93ZXN0IHZhbHVlOiAiKyBzb3J0ZWRNYXAubGFzdEVudHJ5KCkuZ2V0VmFsdWUoKS50b1N0cmluZygpKTsKICAgIH0KICAgIAp9CgpjbGFzcyBWYWx1ZUNvbXBhcmF0b3IgaW1wbGVtZW50cyBDb21wYXJhdG9yPFN0cmluZz4gewoKICAgICAgICBwcml2YXRlIE1hcDxTdHJpbmcsIERvdWJsZT4gYmFzZTsKICAgIAogICAgICAgIHB1YmxpYyBWYWx1ZUNvbXBhcmF0b3IoTWFwPFN0cmluZywgRG91YmxlPiBiYXNlKSB7CiAgICAgICAgICAgIHRoaXMuYmFzZSA9IGJhc2U7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoU3RyaW5nIGEsIFN0cmluZyBiKSB7CiAgICAgICAgICAgIGlmIChiYXNlLmdldChhKSA+PSBiYXNlLmdldChiKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cg==