zoukankan      html  css  js  c++  java
  • Java Map实现按value从大到小排序

    这篇博客是对Java Map对value值实现排序

    首先说一下如果Map对key进行从小到大默认排序是创建TreeMap对象。Map<Integer,Integer> maps = new TreeMap<>();就行了。

    那么如何实现按value排序呢?

    这里使用的是java.util.Collections类实现排序,将Map转成List,再自定义比较器,代码如下:

    package day01_jichu;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.TreeMap;
    
    public class MapValSort {
    	public static void main(String[] args) {
    		Map<String, Integer> maps = new TreeMap<String, Integer>();
    		maps.put("zhangsan", 22);
    		maps.put("lisi", 24);
    		maps.put("wangwu", 18);
    		maps.put("zhaoliu", 22);
    		
    		//自定义比较器
    		Comparator<Map.Entry<String, Integer>> valCmp = new Comparator<Map.Entry<String,Integer>>() {
    			@Override
    			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
    				// TODO Auto-generated method stub
    				return o2.getValue()-o1.getValue();  // 降序排序,如果想升序就反过来
    			}
    		};
    		//将map转成List,map的一组key,value对应list一个存储空间
    		List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String,Integer>>(maps.entrySet()); //传入maps实体
    		Collections.sort(list,valCmp); // 注意此处Collections 是java.util包下面的,传入List和自定义的valCmp比较器
    		//输出map
    		for(int i=0;i<list.size();i++) {
    			System.out.println(list.get(i).getKey() + " = " + list.get(i).getValue());
    		}
    	}
    }
    

      

    下面是输出结果

  • 相关阅读:
    华丽的NHibernate
    Linq to NHibernate入门示例
    更新部分字段 NHibernate
    Entity Framework 与 面向对象
    开源框架之TAB控件
    MEF插件系统中通信机制的设计和实现
    用CQRS+ES实现DDD
    Unit of work + Repository
    [开源]C#二维码生成解析工具,可添加自定义Logo (转)
    就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers(转)
  • 原文地址:https://www.cnblogs.com/zzlback/p/12381881.html
Copyright © 2011-2022 走看看