JAVA中对List<map<String,Object>>根据map某个key值进行排序
方法
compareTo()
比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
返回整数,1,-1,0;返回1表示大于,返回-1表示小于,返回0表示相等。 普通的Integer 类型key进行比较:
public class java_ListMapSort {
public static void main(String[] args) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("name", "p");
map1.put("cj", "5");
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("name", "h");
map2.put("cj", "12");
Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("name", "f");
map3.put("cj", "31");
list.add(map1);
list.add(map3);
list.add(map2);
//排序前
for (Map<String, Object> map : list) {
System.out.println(map.get("cj"));
}
Collections.sort(list, new Comparator<Map<String, Object>>() {
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
Integer name1 = Integer.valueOf(o1.get("cj").toString()) ;//name1是从你list里面拿出来的一个
Integer name2 = Integer.valueOf(o2.get("cj").toString()) ; //name1是从你list里面拿出来的第二个name
return name1.compareTo(name2);
}
});
//排序后
System.out.println("-------------------");
for (Map<String, Object> map : list) {
System.out.println(map.get("cj"));
}
}
}
中文字符比较:
要实现汉字按首字母排序,主要是设置语言环境,如下语句设置语言环境:
这里用到了Collator类,此类实现了Comparator接口,用他的getInstance就可以用指定的语言环境来构造一个Collator对象:
然后用如下语句创建Comparator:
- Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);
要注意的是Comparator里面的泛型类型一定要是Object类型,因为Collator类实现的Comparator接口里面传入的对象是Object:
完整的实现代码如下:
- import java.text.Collator;
- import java.util.*;
- import java.util.Comparator;
- public class cpm {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);
- String[] newArray={"中山","汕头","广州","安庆","阳江","南京","武汉","北京","安阳","北方"};
- List<String> list = Arrays.asList(newArray);
- Collections.sort(list, com);
- for(String i:list){
- System.out.print(i+" ");
- }
- }
- }
输出结果是:
安庆 安阳 北方 北京 广州 南京 汕头 武汉 阳江 中山
实例2:
List<Map<String,Object>> list = new ArrayList<>();
List<GroupItemUser> groupItemUserLists = groupItemUserRepository.findAllByAgencyId(agencyId);
Iterator<GroupItemUser> iterator = groupItemUserLists.iterator();
for (; iterator.hasNext();) {
GroupItemUser groupItemUser = (GroupItemUser) iterator.next();
Long userId = groupItemUser.userId();
SysUser sysUser = sysUserRepository.findOne(userId);
String name = sysUser.name();
Map<String, Object> map = new HashMap<>();
map.put("id", userId);
map.put("name", name);
list.add(map);
} //将List集合按照Map的name进行排序(a>b>c ...)
if(CollectionUtils.isNotEmpty(list)){
Collections.sort(list,new Comparator<Map<String,Object>>() {
@Override
public int compare(Map<String,Object> o1, Map<String,Object> o2) {
Collator instance = Collator.getInstance(Locale.CHINA);
return instance.compare(o1.get("name").toString(), o2.get("name").toString());
}
});
} return list;
JAVA中对List<map<String,Object>>根据map某个key值进行排序的更多相关文章
- 取出List<Map<String,Object>>里面Map的key:value值
1.取出Map其中一个属性的值 Map map = new HashMap(); map.put("key1", "value1"); map.put(&quo ...
- java中对List<Map<String,Object>>中的中文汉字排序
import java.text.Collator;import java.util.ArrayList;import java.util.Collections;import java.util.C ...
- JAVA中对List<Map<String,Object>>中的中文汉字进行排序
转载于:http://blog.csdn.net/flykos/article/details/54631573 参考:http://www.jb51.net/article/88710.htm 本篇 ...
- 自定义规则,对List<Map<String,Object>> List<Object>进行排序
package lltse.java.collection; import java.util.ArrayList; import java.util.Collections; import java ...
- List<Map<String, Object>> 与 json 互转
近期做指纹识别,需要用到缓存文件,数据量并不大,用redis不合适,所以用到了txt文件. 思路是 1.定时查询指纹,存到txt缓存文件中. 2.新增或删除指纹时,查询指纹,存到txt缓存文 ...
- JAVA中对list map根据map某个key值进行排序
package test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; ...
- @RequestParam Map<String, Object> paramMap
@RequestParam 请求方式 url = "/edit?device=${device}&type=${type}" Controller @RequestMapp ...
- String 转 List<Map<String, Object>>
public static List<Map<String, Object>> toListMap(String json){ List<Object> list ...
- List<Map<String,Object>> 中文排序
@RequestMapping(value = "/getBaseCodess", method = RequestMethod.GET) public ModelAndView ...
随机推荐
- Django为数据库的ORM写测试例(TestCase)
models.py里的数据库定义如下: from django.db import models # Create your models here. class Teachers(models.Mo ...
- 使用CSS3改变文本选中的默认颜色
::selection { background:#d3d3d3; color:#555; } ::-moz-selection { background:#d3d3d3; color:#555; } ...
- 【LOJ】#2098. 「CQOI2015」多项式
题解 令x = x - t代换一下会发现 \(\sum_{i = 0}^{n}a_i (x + t)^i = \sum_{i = 0}^{n} b_{i} x^{i}\) 剩下的就需要写高精度爆算了- ...
- Divide by Zero 2018 and Codeforces Round #474 (Div. 1 + Div. 2, combined)
思路:把边看成点,然后每条边只能从下面的边转移过来,我们将边按照u为第一关键字,w为第二关键字排序,这样就能用线段树维护啦. #include<bits/stdc++.h> #define ...
- java 报错英文
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流! —————————— 第一章:JDK(Java Development Kit) java开发工具包 J ...
- UICollectionView 常用操作
1 iOS开发 - UICollectionView点击展开收起
- BZOJ.2142.礼物(扩展Lucas)
题目链接 答案就是C(n,m1) * C(n-m1,m2) * C(n-m1-m2,m3)...(mod p) 使用扩展Lucas求解. 一个很简单的优化就是把pi,pi^ki次方存下来,因为每次分解 ...
- BZOJ.1923.[SDOI2010]外星千足虫(高斯消元 异或方程组 bitset)
题目链接 m个方程,n个未知量,求解异或方程组. 复杂度比较高,需要借助bitset压位. 感觉自己以前写的(异或)高斯消元是假的..而且黄学长的写法都不需要回代. //1100kb 324ms #i ...
- 20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
一.结对对象 姓名:周亚杰 学号:20172302 担任角色:驾驶员(周亚杰) 伙伴第二周博客地址 二.本周内容 (一)继续编写上周未完成代码 1.本周继续编写代码,使代码支持分数类计算 2.相关过程 ...
- spring-boot 速成(7) 集成dubbo
github上有一个开源项目spring-boot-starter-dubbo 提供了spring-boot与dubbo的集成功能,直接拿来用即可.(记得给作者点赞,以示感谢!) 下面是使用步骤,先看 ...