package test; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * Created by 16/8/3. */ public class paixuMap { public static void main(String[] args) { Map<String ,Integer> map = new HashMap<String ,Integer>(); map.put("aa", 22); map.put("bb", 11); map.put("cc", 44); map.put("dd", 33); map.put("ee", 55); Map.Entry[] entries= getSortedHashtableByValue(map,"DESC"); for(int i=0;i<entries.length;i++) { System.out.println(entries[i]); } } /** * 根据HashMap的value排序 * @param map HashMap * @param type ASC:正序(默认值) DESC:倒序 * @return */ public static Map.Entry[] getSortedHashtableByValue(Map map, final String type) { Set set = map.entrySet(); Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set.size()]); Arrays.sort(entries, new Comparator() { public int compare(Object arg0, Object arg1) { int result = 0; Long key1 = Long.valueOf(((Map.Entry) arg0).getValue().toString()); Long key2 = Long.valueOf(((Map.Entry) arg1).getValue().toString()); if(type != null && type.trim() != "" && "DESC".equals(type.toUpperCase())){ result = key2.compareTo(key1); }else { result = key1.compareTo(key2); } return result; } }); return entries; } }