map 按value排序

来源:互联网 发布:java有指针吗 编辑:程序博客网 时间:2024/06/05 06:07
package 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.Map;import java.util.Map.Entry;public class MapValueComparator {public static void printMap(Map<String, Long> map) {Iterator it = map.entrySet().iterator();while (it.hasNext()) {Map.Entry entry = (Map.Entry) it.next();System.out.println(entry.getKey() + ":" + entry.getValue());}}public static Map<String, Long> sortMap(Map<String, Long> oldMap) {ArrayList<Map.Entry<String, Long>> list = new ArrayList<Map.Entry<String, Long>>(oldMap.entrySet());Collections.sort(list, new Comparator<Map.Entry<String, Long>>() {@Overridepublic int compare(Entry<java.lang.String, Long> arg0, Entry<java.lang.String, Long> arg1) {// return arg0.getValue() - arg1.getValue(); //ascreturn (int) (arg1.getValue() - arg0.getValue()); // desc}});Map<String, Long> newMap = new LinkedHashMap<String, Long>();for (int i = 0; i < list.size(); i++) {newMap.put(list.get(i).getKey(), list.get(i).getValue());}return newMap;}public static void main(String[] args) throws Exception {// TODO code application logic hereMap<String, Long> myMap = new HashMap<String, Long>();myMap.put("1", 1l);myMap.put("2", 4l);myMap.put("3", 3l);myMap.put("4", 9l);myMap.put("5", 6l);myMap.put("6", 2l);myMap = sortMap(myMap);printMap(myMap);}}

0 0
原创粉丝点击