`
bugyun
  • 浏览: 542961 次
社区版块
存档分类
最新评论

对 List 里面 Map 的指定 key 进行排序

    博客分类:
  • Java
阅读更多

 

对 List 里面 Map 的指定 key 进行排序,重写Collections.sort() 方法

 new HashSet<>(list) 构造函数,会打乱 list 原有的顺序

 

package com.bugyun.tmp;


public class CollectionTool {
	
	/**
	 * @Description: 按照 args 由大到小排序
	 * @param list
	 * @param args  
	 * @return void  
	 * @throws
	 * @author beyond
	 * @date 2015-7-22
	 */
	public static void sort( List<Map<String, Object>> list , final String args ) {
		if(StringUtil.isNotEmpty(args)){
			Collections.sort(list, new Comparator<Map<String,Object>>() {
				public int compare(Map<String,Object> mapOne, Map<String,Object> mapTwo) {
					int flag = 0 ;
					Double  first = Double.valueOf(mapOne.get(args).toString());
					Double  second = Double.valueOf(mapTwo.get(args).toString());
					
					if((first - second) > 0){
						flag = -1 ;
					}else if((first - second) < 0){
						flag = 1 ;
					}else{
						flag = 0 ;
					}
					return flag ;
				};
			});
		}
	}
	
	/**
	 * @Description: 按照 args 由小到大排序
	 * @param list
	 * @param args  
	 * @return void  
	 * @author beyond
	 * @date 2015-8-12
	 */
	public static void sortRev( List<Map<String, Object>> list , final String args ) {
		if(StringUtil.isNotEmpty(args)){
			Collections.sort(list, new Comparator<Map<String,Object>>() {
				public int compare(Map<String,Object> mapOne, Map<String,Object> mapTwo) {
					int flag = 0 ;
					Double  first = Double.valueOf(mapOne.get(args).toString());
					Double  second = Double.valueOf(mapTwo.get(args).toString());
					
					if((first - second) > 0){
						flag = 1 ;
					}else if((first - second) < 0){
						flag = -1 ;
					}else{
						flag = 0 ;
					}
					return flag ;
				};
			});
		}
	}
	
	
	public static void main(String[] args) {
		List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();  
        Map<String,Object> mapOne = new HashMap<String, Object>();  
        Map<String,Object> mapTwo = new HashMap<String, Object>();  
        Map<String,Object> mapThree = new HashMap<String, Object>();  
        Map<String,Object> mapFour = new HashMap<String, Object>();  
        Map<String,Object> mapFive = new HashMap<String, Object>();  
        Map<String,Object> mapSix = new HashMap<String, Object>();  
        Map<String,Object> map7 = new HashMap<String, Object>();  
        Map<String,Object> map8 = new HashMap<String, Object>();  
          
        mapOne.put("gradeId", "1");  
        mapOne.put("clzssId", "1");  
        mapOne.put("score", 0.0);  
          
        mapTwo.put("gradeId", "1");  
        mapTwo.put("clzssId", "2");  
        mapTwo.put("score", 0.8);  
          
        mapThree.put("gradeId", "1");  
        mapThree.put("clzssId", "3");  
        mapThree.put("score", 0.0);  
          
          
        mapFour.put("gradeId", "1");  
        mapFour.put("clzssId", "3");  
        mapFour.put("score", 1.0);  
          
        mapFive.put("gradeId", "1");  
        mapFive.put("clzssId", "2");  
        mapFive.put("score", 1.0);  
          
        mapSix.put("gradeId", "1");  
        mapSix.put("clzssId", "4");  
        mapSix.put("score", 0.0);  

        map7.put("gradeId", "1");  
        map7.put("clzssId", "4");  
        map7.put("score", 1.0);  

        map8.put("gradeId", "1");  
        map8.put("clzssId", "4");  
        map8.put("score", 0.8);  


        list.add(mapOne);  
        list.add(mapTwo);  
        list.add(mapThree);  
        list.add(mapFour);  
        list.add(mapFive);  
        list.add(mapSix); 
        list.add(map7);  
        list.add(map8); 
        
          
        sortRev(list,"score"); 
        
        /**
         * new HashSet<>(list) 构造函数,会打乱 list 原有的顺序
         */
        Set<Map<String,Object>> set = new HashSet<Map<String,Object>>(list);
        
        for(Map<String,Object> map : list){
        	System.err.println(map);
        }
        
        for(Map<String,Object> map : set){
        	System.out.println(map);
        }
	}
}

 

分享到:
评论

相关推荐

    Java中对list map根据map某个key值进行排序的方法

    今天小编就为大家分享一篇Java中对list map根据map某个key值进行排序的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    List<Map>中英文排序

    支持一个List&lt;Map&gt;按照MAP中的一个或者多个Key的value值的中英文来排序,自动识别字符和数字(包括[a-zA-z]?[0-9]*)排序

    java中set、list和map的使用方法实例

    // map对象容器里面储存的元素是(key,value)形式的键值对,比如(a,1)(b,20)(c,55) // key不可以重复,value可以重复 // 常用的map接口的实现类有HashMap,LinkedHashMap和TreeMap // HashMap不保证集合中元素的顺序,...

    set.list.map接口

    //如果要对键进行排序Map map=new TreeMap(); Map,String&gt; map=new TreeMap,String&gt;(); //Map map=new HashMap(); map.put(1, "yi"); map.put(23, "er"); map.put(12, "san"); map.put(3, "si"); //遍历...

    Android 对Map按key和value分别排序的实例

    一. 理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。 TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序... key排序 Tr

    JCF(List、Set、Map)学习,实现了<key,value>按value排序噢

    麻雀虽小,五脏俱全 展示了一个JDK的BUG,有兴趣的朋友,可以看下噢 我也不知道算不算BUG,解决起来很简单,但这样似乎违背了JDK的本意

    Lambada List集合操作实例(最全最容易理解)

    主要包含常用的排序、取某个属性list、按照属性分组、过滤集合、list转map重复key覆盖、获取最大最小值及平均数、获取基本类型的和、获取Bigdecimal求和、对基本集合去重、对集合中相同属性进行计数、集合排序、倒叙...

    数据结构 堆排序 MFC

    数据结构试验堆排序MFC // HeapSortDlg.h : header file // #if !defined(AFX_HEAPSORTDLG_H__DA227A0F_D8D2_459E_A6AE_1F11F292DDDD__INCLUDED_) #define AFX_HEAPSORTDLG_H__DA227A0F_D8D2_459E_A6AE_1F11F292...

    java8 stream自定义分组求和并排序的实现

    主要介绍了java8 stream自定义分组求和并排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java遍历特例

    java Map 遍历方法 Map map = new HashMap(); Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); ...

    Java工具库BeanQuery.zip

    来简化对Bean(集合)的排序,过滤和转换。 文档 阅读 使用说明来学习怎么使用 BeanQueryExample.java用Junit测试用例的方式展示用法。 快速入门 BeanQuery的使用非常简单也很直接,例子...

    freemarker总结

    对sequence按里面的对象toString()的结果进行排序 sequence?sort_by(value) 对sequence 按里面的对象的属性value进行排序 如: sequence里面放入的是10 个user对象,user对象里面包含name,age等属性 sequence?sort_...

    Redis面试题.pdf

    Redis通常被称为数据结构服务器,因为值(value)可以是 字符串(String)、哈希(Map)、列表(list)、集合(sets)、有序集合(sorted sets)等类型。 Redis是一个key-value存储系统,它支持丰富的数据类型,这些数据类型...

    java summary(java笔记)

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...

    certified-map

    容器对排序的地图进行建模,其中键和值都是任意的Blob。 排序方面对于密钥不存在和范围查询的身份验证很重要。 put(key: blob, value: blob) (更新)将新条目插入地图。 get(key: blob) -&gt; CertifiedResponse通过...

    Java容器.xmind

    对键进行排序 HashTable 标记: class Properties 标记: class 线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。 Collections 标记: 均以synchronized实现, 性能没用提高 synchronizedCollection...

    大数据知识脉络总结

    输入:Text,list 输出:Text,Text OutputForamt 特殊组件 partitioner 数据分区 key.hashcode % reduceTaskNum combiner 本地reduce,在map阶段运行 看情况使用 排序&TopN; 共同好友计算 分布式资源...

    spring-batch-redis:Redis的Spring Batch扩展

    Spring Batch Redis 基于Redis的ItemReader和ItemWriter实现。 资料类型 Spring Batch Redis支持两种数据类型:密钥转储和密钥值。 KeyDump KeyDump存储密钥,以... 排序集: ZRANGE → List&lt;ScoredValue&lt;Stri

    cms后台管理

    &lt;entry key="cms_content_list" value-ref="cms_content_list"/&gt; …… &lt;/map&gt; &lt;/property&gt; …… &lt;/bean&gt; 类ContentListDirective继承自AbstractContentDirective,最主要的是execute方法 public class ...

    java 面试题 总结

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...

Global site tag (gtag.js) - Google Analytics