Possible Duplicate:
TreeMap sort by value
请看下面的代码
import java.util.HashMap;
import java.util.Map;
public class Mapper
{
Map mMap;
public Mapper()
{
mMap = new HashMap();
mMap.put("A",1);
mMap.put("B",2);
mMap.put("C",3);
mMap.put("D",4);
mMap.put("E",5);
mMap.put("F",6);
}
}
如您所见, map 包含 2 种类型的数据。现在我需要按值对其进行排序,如果可能的话,最好按降序排列,否则没有问题,正常排序。但是,你知道下面这样的事情是不可能的
Map<String, int> treeMap = new TreeMap<String, int>(mMap);
那么,我该如何排序呢?请帮忙。
最佳答案
Map<String, Integer> mMap = new HashMap<String, Integer>();
mMap.put("A",1);
mMap.put("B",2);
mMap.put("C",3);
mMap.put("D",4);
mMap.put("E",5);
mMap.put("F",6);
private static Map sortByComparator(Map unsortMap) {
List list = new LinkedList(unsortMap.entrySet());
// sort list based on comparator
Collections.sort(list, new Comparator() {
public int compare(Object o1, Object o2) {
return ((Comparable) ((Map.Entry) (o1)).getValue())
.compareTo(((Map.Entry) (o2)).getValue());
}
});
Map sortedMap = new LinkedHashMap();
for (Iterator it = list.iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
sortedMap.put(entry.getKey(), entry.getValue());
}
return sortedMap;
}
关于java - 按值对映射进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910056/