package com.zuidaima.util;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class ValueComparator implements Comparator {
Map base;
public ValueComparator(Map base) {
this.base = base;
}
public int compare(Long a, Long b) {
if (base.get(a).doubleValue() >= base.get(b).doubleValue()) {
return -1;
} else {
return 1;
}
}
public static > Map sortByValues(
final Map map) {
Comparator valueComparator = new Comparator() {
public int compare(K k1, K k2) {
int compare = map.get(k2).compareTo(map.get(k1));
if (compare == 0)
return 1;
else
return compare;
}
};
Map sortedByValues = new TreeMap(valueComparator);
sortedByValues.putAll(map);
return sortedByValues;
}
public static void main(String[] args) {
HashMap map = new HashMap();
map.put(1l, 99.5);
map.put(2l, 67.2);
map.put(3l, 67.5);
map.put(4l, 67.6);
ValueComparator bvc = new ValueComparator(map);
TreeMap sorted_map = new TreeMap(bvc);
System.out.println("unsorted map: " + map);
sorted_map.putAll(map);
System.out.println("results: " + sorted_map);
Map sorted_map2 = sortByValues(map);
System.out.println("results2: " + sorted_map2);
}
}
输出结果:
unsorted map: {1=99.5, 2=67.2, 3=67.5, 4=67.6}
results: {1=99.5, 4=67.6, 3=67.5, 2=67.2}
results2: {1=99.5, 4=67.6, 3=67.5, 2=67.2}
通过key比较大小的原理类似,大家改写下就好了。enjoy it。
原文:http://blog.csdn.net/yaerfeng/article/details/28592999