zoukankan      html  css  js  c++  java
  • 根据Map的value来进行排序

    package corejava;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    import java.util.Map.Entry;
    
    public class 根据value对map排序 {
    
    	public static void main(String[] args) {
    		//构建测试数据
    		Map<String,Integer> map = new HashMap<String,Integer>();
    		
    		map.put("g", 7);
    		map.put("a", 6);
    		map.put("b", 5);
    		map.put("c", 4);
    		map.put("d", 3);
    		map.put("f", 1);
    		map.put("e", 2);
    		
    		//对map进行排序, 按照value升序排序
    		map = sortMapByValue(map);
    		
    		//测试代码
    //		Set<Entry<String,Integer>> set = map.entrySet();
    //		
    //		for (Entry<String, Integer> entry : set) {
    //			System.out.println(entry.getKey()+":"+entry.getValue());
    //		}
    		
    	}
    	
    	/**
    	 * 对map进行排序, 按照value升序排序
    	 * @param map
    	 * @return
    	 */
    	public static Map<String,Integer> sortMapByValue(Map<String,Integer> map){
    		//将Map集合转变为一个List集合,目的是为了调用Collections.sort方法来为List排序.
    		//list里装的对象是一个Entry, 即map的键值对.
    		Set<Entry<String,Integer>> set = map.entrySet();
    		List<Entry<String,Integer>> list = new ArrayList<Entry<String,Integer>>(set);
    		
    		//sort的重载方法, 通过实现Comparator接口来为List集合里的entry元素进行排序,按照entry的value进行升序排序
    		Collections.sort(list, new Comparator<Entry<String,Integer>>() {
    			@Override
    			public int compare(Entry<String, Integer> o1,Entry<String, Integer> o2) {
    				return o1.getValue() - o2.getValue();
    			}
    		});
    		
    		//创建一个LinkedHashMap, 目的是为了返回一个有序的Map, 且顺序是按照元素放入Map时的顺序
    		Map<String,Integer> resultMap = new LinkedHashMap<String,Integer>();
    		
    		for (Entry<String, Integer> e : list) {
    			resultMap.put(e.getKey(), e.getValue());
    		}
    		return resultMap;
    	}
    }
    

      思路:

      1. 将Map转变为可以排序的List

      2. 使用Collections.sort的重载方法, 实现Compactor接口来实现自定义排序, 排序方式是按照Map的value升序排序.

      3. 返回一个有序的map

  • 相关阅读:
    asp.net 文件下载
    net 数据库连接详解 相当经典啊
    取值:webconfig中的key
    通过监听的端口查找本机进程和服务思路
    以系统服务运行某个程序
    测底根除Windows流氓软件开机自动运行
    使用Wireshark在主机上抓取远程主机的数据流量
    记录Windows远程登录日志
    证书不匹配发出告警的解决方法
    WPS office云同步图标彻底删除方法
  • 原文地址:https://www.cnblogs.com/klaus-guan/p/4082257.html
Copyright © 2011-2022 走看看