Map排序(java)

来源:互联网 发布:在线淘宝网 编辑:程序博客网 时间:2024/06/05 23:09
package com;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;/** *  *  * @author muyunfei *  * <p>Modification History:</p>  * <p>Date       Author      Description</p> * <p>------------------------------------------------------------------</p> * <p>Jun 7, 2017           牟云飞        新建</p> */public class MapSortDebug {public static void main(String[] args) {Map<String, String> map = new HashMap<String, String>();map.put("广州", "999");map.put("深圳", "28");map.put("珠海", "898");map.put("佛山", "666");map.put("海南", "889");Map<String, Integer> result = getSortMap(map);}private static Map<String, Integer> getSortMap(Map<String, String> map){// 这里将map.entrySet()转换成listList<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());// 根据字符串类型的数字排序,当然也可以Map.Entry<String, Double>Collections.sort(list, new QuantityComparator()); //输出Map<String, Integer> mapresult  = new HashMap<String, Integer>();if(list.size()>0){for(int i=0;i<list.size();i++){mapresult.put(list.get(i).getKey(), i+1);System.out.println(list.get(i).getKey()+":"+list.get(i).getValue()+";");}}return mapresult;}private static class QuantityComparator implements Comparator<Object> {public int compare(Object object1, Object object2) {// 实现接口中的方法Map.Entry<String, String> p1 = null;Map.Entry<String, String> p2 = null;p1 = (Map.Entry<String, String>) object1; // 强制转换p2 = (Map.Entry<String, String>) object2;return Double.valueOf(p1.getValue()).compareTo(Double.valueOf(p2.getValue()));}}}