java HasnMap 按值进行排序方法
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class AddAll {
public static void main(String [] args) {
Map<String,Integer> map=new HashMap<String,Integer>();
for(int i=0;i<5;i++) {
map.put(String.valueOf(i),i);
}
List<Map.Entry<String,Integer>> list=new ArrayList<Map.Entry<String,Integer>>();
CompareValue cop=new CompareValue();
Map<String,Integer> lmap=new LinkedHashMap<String,Integer>();
list.addAll(map.entrySet());
Collections.sort(list,cop);
Iterator<Map.Entry<String, Integer>> it=list.iterator();
while(it.hasNext()) {
String key=it.next().getKey();
lmap.put(key,map.get(key));
}
System.out.print(lmap);
}
}
class CompareValue implements Comparator<Map.Entry<String,Integer>>{
public int compare(Map.Entry<String,Integer> u,Map.Entry<String,Integer> m) {
return m.getValue()-u.getValue();
}
}
方法解析:
1:首先生成一个HashMap,实际情况下是从数据库取得HashMap。
2:产生一个Map.Entry<K,M>类型的List,Entry<K,M>是Map声明的一个内部范性接口。
3:对list进行赋值,其值为map.entrySet()->有getKey()和getValue()方法获取键/值。
4:使用Collections提供的sort方法按照对Comparator的compare方法重新实现后的方法进行排序;
5:用list生成一个Iterator迭代器,进行迭代,取得key值并写入LinkedHashMap中(按照插入顺序进行排序)