对map的value值排序

来源:互联网 发布:电脑位数怎么看 mac 编辑:程序博客网 时间:2024/06/05 05:59

一,MapUtil

package com.util;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;public class MapUtil {/** * 对map排序。 */public static Map<String, Double> sortMapByValue(Map<String, Double> oriMap) {      Map<String, Double> sortedMap = new LinkedHashMap<String, Double>();      if (oriMap != null && !oriMap.isEmpty()) {          List<Map.Entry<String, Double>> entryList = new ArrayList<Map.Entry<String, Double>>(oriMap.entrySet());          Collections.sort(entryList,                  new Comparator<Map.Entry<String, Double>>() {                      public int compare(Entry<String, Double> entry1,                              Entry<String, Double> entry2) {                          double value1 = 0, value2 = 0;                          try {                              value1 = entry1.getValue() * 1000;                              value2 = entry2.getValue() * 1000;                         } catch (NumberFormatException e) {                              value1 = 0;                              value2 = 0;                          }                          return (int) (value2 - value1);                      }                  });          Iterator<Map.Entry<String, Double>> iter = entryList.iterator();          Map.Entry<String, Double> tmpEntry = null;          while (iter.hasNext()) {              tmpEntry = iter.next();              sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());          }      }      return sortedMap;  }}

二,测试

public static void main(String[] args) {Map<String,Double> map = new LinkedHashMap<String,Double>();map.put("no1", 2.25);map.put("no2", 4.4);map.put("no3", 10.0);map.put("no4", 3.51);map.put("no5", 2.05);map.put("no6", 13.1);map.put("no7", 9.77);//对map的value值排序Map<String,Double> sortMap = MapUtil.sortMapByValue(map);System.out.println(sortMap);}


三,打印结果:

{no6=13.1, no3=10.0, no7=9.77, no2=4.4, no4=3.51, no1=2.25, no5=2.05}

0 0