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

对 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);
        }
	}
}

 

分享到:
评论

相关推荐

    对Map按key和value分别排序

    这时,我们可以借助于 Collections 的 sort(List&lt;T&gt; list, Comparator&lt;? super T&gt; c) 方法,该方法根据指定比较器产生的顺序对指定列表进行排序。但是,需要注意的是,所有的元素都必须能够根据所提供的比较器来进行...

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

    Java中对List&lt;Map&gt;根据Map某个key值进行排序的方法 在 Java 中,排序是一个非常常见的操作,特别是在处理 List 集合时。当我们需要根据 Map 中的某个 key 值对 List 集合进行排序时,需要使用Comparator接口来实现...

    List<Map>中英文排序

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

    Java Map按键排序和按值排序

    Map是一种键值对的集合,它可以按照键或值进行排序。下面,我们将详细地介绍Java Map的按键排序和按值排序。 按键排序(sort by key) Java中的TreeMap,V&gt;类可以实现Map的按键排序。TreeMap,V&gt;是一个基于红黑树的...

    在Java 8中将List转换为Map对象方法

    如果我们想要将List转换为Map,并对键进行自然排序,我们可以使用TreeMap来实现: Map, String&gt; mapOfEmployees = employees.stream().collect( Collectors.toMap( e -&gt; e.getEmpId(), e -&gt; e.getEmpName(), ...

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

    总的来说,对Android中的Map进行key排序可以使用TreeMap配合自定义Comparator,而进行value排序则需要先将Map的entrySet转换为List,再利用Collections的sort方法。理解这些排序机制有助于我们在实际开发中更有效地...

    Java Map 按值排序

    我们可以将Map转换为List&lt;Map.Entry, V&gt;&gt;,然后使用Collections.sort()方法对List进行排序。这里需要提供一个Comparator,基于值进行比较: ```java Map, Integer&gt; map = new HashMap(); // 添加元素... List&lt;Map....

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

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

    SpringBoot+Mybatis,返回Map的时候,将Map内的Key转换为驼峰的命名

    在将查询结果转换为Map时,我们可能会遇到需要将Map的Key由下划线形式转换为驼峰形式的需求。 要实现这个功能,我们可以创建一个工具类,专门处理这种转换。以下是一个简单的示例: ```java import java.util.Map;...

    Java 对象属性map排序示例

    在Java编程中,Map接口是数据结构之一,用于存储键值对。...对于对象属性Map的排序,需要先对Map进行排序,然后可能还要对对象列表进行排序。通过理解这些概念,开发者能够灵活地控制Java程序中数据的排序逻辑。

    集合概述set、List、Map

    在某些情况下,我们需要对Map中的键进行排序,这时候就需要使用`Comparable`接口。该接口用于定义对象之间的自然排序规则。 ##### 4.3 实现原理 常见的Map实现包括: - **HashMap**:基于哈希表实现,提供了快速...

    Java Map 按Key排序实例代码

    本篇文章将深入讲解如何在Java中实现Map按Key排序,并通过一个具体的实例代码进行演示。 首先,我们要了解Java中支持按Key排序的Map实现类:TreeMap。TreeMap内部基于红黑树数据结构,能够保证Map的Key按照自然顺序...

    List对象排序通用方法

    - `sort()`方法支持`key`参数,可以指定一个函数,该函数将被应用到列表的每个元素上,然后根据返回值进行排序。这对于自定义排序规则非常有用。 ```python fruits = ['banana', 'apple', 'cherry', 'date'] ...

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

    标题中提到的“JCF(List、Set、Map)学习,实现了&lt;key,value&gt;按value排序”是一个关键点,我们将深入探讨这个话题。 首先,让我们了解List、Set和Map的区别。List是有序的集合,允许重复元素,并且可以保持插入顺序...

    Java集合排序及java集合类详解(Collection、List、Map、Set)

    本文将围绕Java集合框架进行详细介绍,包括Collection、List、Set、Map等基本概念及其实现原理。 #### 容器简介 在计算机科学中,容器是一种用来存储数据的对象。Java集合框架提供了一组接口和实现,这些容器用于...

    java基础-list_map_等等的基本概念

    使用Map时,我们通常用`put(key, value)`来添加键值对,`get(key)`来获取对应的值: ```java Map, Integer&gt; map = new HashMap(); map.put("Apple", 1); map.put("Banana", 2); int appleValue = map.get("Apple");...

    Java Map 按key排序和按Value排序的实现方法

    在这个例子中,我们首先将`map.entrySet()`转换为一个ArrayList,然后用`Collections.sort()`方法对这个List进行排序。`Comparator`比较的是两个entry的value,并返回一个整数值,决定了它们的相对顺序。 3. **...

    Java_Collection_List-Set-Map.zip_list set map

    - Map的方法包括put(K key, V value)插入键值对,get(Object key)根据键获取值,remove(Object key)移除键对应的键值对等。 了解和熟练掌握List、Set和Map接口及其实现类,对于编写高效、可维护的Java代码至关重要...

Global site tag (gtag.js) - Google Analytics