You can not sort TreeMap on values.
A Red-Black tree based NavigableMap implementation. The map is sorted according to the natural ordering of its keys, or by a Comparator provided at map creation time, depending on which constructor is used You will need to provide
comparator
forComparator<? super K>
so your comparator should compare on keys.
To provide sort on values you will need SortedSet. Use
SortedSet<Map.Entry<String, Double>> sortedset = new TreeSet<Map.Entry<String, Double>>( new Comparator<Map.Entry<String, Double>>() { @Override public int compare(Map.Entry<String, Double> e1, Map.Entry<String, Double> e2) { return e1.getValue().compareTo(e2.getValue()); } }); sortedset.addAll(myMap.entrySet());
To give you an example
SortedMap<String, Double> myMap = new TreeMap<String, Double>(); myMap.put("a", 10.0); myMap.put("b", 9.0); myMap.put("c", 11.0); myMap.put("d", 2.0); sortedset.addAll(myMap.entrySet()); System.out.println(sortedset);
Output:
[d=2.0, b=9.0, a=10.0, c=11.0]