对 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); } } }
相关推荐
这时,我们可以借助于 Collections 的 sort(List<T> list, Comparator<? super T> c) 方法,该方法根据指定比较器产生的顺序对指定列表进行排序。但是,需要注意的是,所有的元素都必须能够根据所提供的比较器来进行...
Java中对List<Map>根据Map某个key值进行排序的方法 在 Java 中,排序是一个非常常见的操作,特别是在处理 List 集合时。当我们需要根据 Map 中的某个 key 值对 List 集合进行排序时,需要使用Comparator接口来实现...
支持一个List<Map>按照MAP中的一个或者多个Key的value值的中英文来排序,自动识别字符和数字(包括[a-zA-z]?[0-9]*)排序
Map是一种键值对的集合,它可以按照键或值进行排序。下面,我们将详细地介绍Java Map的按键排序和按值排序。 按键排序(sort by key) Java中的TreeMap,V>类可以实现Map的按键排序。TreeMap,V>是一个基于红黑树的...
如果我们想要将List转换为Map,并对键进行自然排序,我们可以使用TreeMap来实现: Map, String> mapOfEmployees = employees.stream().collect( Collectors.toMap( e -> e.getEmpId(), e -> e.getEmpName(), ...
总的来说,对Android中的Map进行key排序可以使用TreeMap配合自定义Comparator,而进行value排序则需要先将Map的entrySet转换为List,再利用Collections的sort方法。理解这些排序机制有助于我们在实际开发中更有效地...
我们可以将Map转换为List<Map.Entry, V>>,然后使用Collections.sort()方法对List进行排序。这里需要提供一个Comparator,基于值进行比较: ```java Map, Integer> map = new HashMap(); // 添加元素... List<Map....
在将查询结果转换为Map时,我们可能会遇到需要将Map的Key由下划线形式转换为驼峰形式的需求。 要实现这个功能,我们可以创建一个工具类,专门处理这种转换。以下是一个简单的示例: ```java import java.util.Map;...
// map对象容器里面储存的元素是(key,value)形式的键值对,比如(a,1)(b,20)(c,55) // key不可以重复,value可以重复 // 常用的map接口的实现类有HashMap,LinkedHashMap和TreeMap // HashMap不保证集合中元素的顺序,...
在Java编程中,Map接口是数据结构之一,用于存储键值对。...对于对象属性Map的排序,需要先对Map进行排序,然后可能还要对对象列表进行排序。通过理解这些概念,开发者能够灵活地控制Java程序中数据的排序逻辑。
在某些情况下,我们需要对Map中的键进行排序,这时候就需要使用`Comparable`接口。该接口用于定义对象之间的自然排序规则。 ##### 4.3 实现原理 常见的Map实现包括: - **HashMap**:基于哈希表实现,提供了快速...
本篇文章将深入讲解如何在Java中实现Map按Key排序,并通过一个具体的实例代码进行演示。 首先,我们要了解Java中支持按Key排序的Map实现类:TreeMap。TreeMap内部基于红黑树数据结构,能够保证Map的Key按照自然顺序...
- `sort()`方法支持`key`参数,可以指定一个函数,该函数将被应用到列表的每个元素上,然后根据返回值进行排序。这对于自定义排序规则非常有用。 ```python fruits = ['banana', 'apple', 'cherry', 'date'] ...
标题中提到的“JCF(List、Set、Map)学习,实现了<key,value>按value排序”是一个关键点,我们将深入探讨这个话题。 首先,让我们了解List、Set和Map的区别。List是有序的集合,允许重复元素,并且可以保持插入顺序...
本文将围绕Java集合框架进行详细介绍,包括Collection、List、Set、Map等基本概念及其实现原理。 #### 容器简介 在计算机科学中,容器是一种用来存储数据的对象。Java集合框架提供了一组接口和实现,这些容器用于...
使用Map时,我们通常用`put(key, value)`来添加键值对,`get(key)`来获取对应的值: ```java Map, Integer> map = new HashMap(); map.put("Apple", 1); map.put("Banana", 2); int appleValue = map.get("Apple");...
在这个例子中,我们首先将`map.entrySet()`转换为一个ArrayList,然后用`Collections.sort()`方法对这个List进行排序。`Comparator`比较的是两个entry的value,并返回一个整数值,决定了它们的相对顺序。 3. **...
- Map的方法包括put(K key, V value)插入键值对,get(Object key)根据键获取值,remove(Object key)移除键对应的键值对等。 了解和熟练掌握List、Set和Map接口及其实现类,对于编写高效、可维护的Java代码至关重要...