方法
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:

  1. Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);

要注意的是Comparator里面的泛型类型一定要是Object类型,因为Collator类实现的Comparator接口里面传入的对象是Object:

完整的实现代码如下:

  1. import java.text.Collator;
  2. import java.util.*;
  3. import java.util.Comparator;
  4. public class cpm {
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);
  8. String[] newArray={"中山","汕头","广州","安庆","阳江","南京","武汉","北京","安阳","北方"};
  9. List<String> list = Arrays.asList(newArray);
  10. Collections.sort(list, com);
  11. for(String i:list){
  12. System.out.print(i+"  ");
  13. }
  14. }
  15. }

输出结果是:

安庆  安阳  北方  北京  广州  南京  汕头  武汉  阳江  中山

实例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值进行排序的更多相关文章

  1. 取出List<Map<String,Object>>里面Map的key:value值

    1.取出Map其中一个属性的值 Map map = new HashMap(); map.put("key1", "value1"); map.put(&quo ...

  2. java中对List<Map<String,Object>>中的中文汉字排序

    import java.text.Collator;import java.util.ArrayList;import java.util.Collections;import java.util.C ...

  3. JAVA中对List<Map<String,Object>>中的中文汉字进行排序

    转载于:http://blog.csdn.net/flykos/article/details/54631573 参考:http://www.jb51.net/article/88710.htm 本篇 ...

  4. 自定义规则,对List<Map<String,Object>> List<Object>进行排序

    package lltse.java.collection; import java.util.ArrayList; import java.util.Collections; import java ...

  5. List<Map<String, Object>> 与 json 互转

    近期做指纹识别,需要用到缓存文件,数据量并不大,用redis不合适,所以用到了txt文件. 思路是 1.定时查询指纹,存到txt缓存文件中.      2.新增或删除指纹时,查询指纹,存到txt缓存文 ...

  6. JAVA中对list map根据map某个key值进行排序

    package test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; ...

  7. @RequestParam Map<String, Object> paramMap

    @RequestParam 请求方式 url = "/edit?device=${device}&type=${type}" Controller @RequestMapp ...

  8. String 转 List<Map<String, Object>>

    public static List<Map<String, Object>> toListMap(String json){ List<Object> list ...

  9. List<Map<String,Object>> 中文排序

    @RequestMapping(value = "/getBaseCodess", method = RequestMethod.GET) public ModelAndView ...

随机推荐

  1. (转阮一峰)深入理解OAuth 2.0

    OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为R ...

  2. 迷茫于Hibernate/JPA的人提一些建议。

    想对那些“迷惑”于Java ORM框架的J2EE开发人员提一些建议,希望能够对他们 更深入的理解和运用J2EE ORM框架来提速工作有所帮助,这些建议可能显得有些”陈旧“和”肤浅“, 因为最近半年我没 ...

  3. VMware虚拟机三种联网方法及原理

    VMware虚拟机三种联网方法及原理   一.Brigde——桥接:默认使用VMnet0   1.原理:   Bridge 桥"就是一个主机,这个机器拥有两块网卡,分别处于两个局域网中,同时 ...

  4. 【Ubuntu】Ubuntu设置和查看环境变量

    [Ubuntu]Ubuntu设置和查看环境变量    转载 https://blog.csdn.net/White_Idiot/article/details/78253004 1. 查看环境变量 查 ...

  5. 【python学习-4】可复用函数与模块

    1.自定义函数 自定义函数格式如下: def <函数名> (参数列表): <函数语句> return <返回值> #!/usr/bin/python # 定义函数, ...

  6. Linux usb 驱动程序范例

                     linxu_usb驱动之框架 USB骨架程序可以被看做一个最简单的USB设备驱动的实例. 首先看看USB骨架程序的usb_driver的定义 [cpp] view p ...

  7. curl请求指定host ip(指定域名解析的内网某ip)

    域名www.test.com解析内部多台ip $httpHeader = array('Host: www.test.com');$url = "10.17.2.245/xxx/xxx/t. ...

  8. HDU 4122 Alice's mooncake shop (RMQ)

    Alice's mooncake shop Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  9. Android WebView加载Html右边空白问题的解决方案

    用WebView显示Html时,右边会出现一条空白区,如下图所示: 最开始的时候,认为是网页本身的空白. 后来发现网页本身无问题,且这个空白区是跟Scroll Bar 的位置和粗细比较相符,于是去控制 ...

  10. systemtap 安装 总结

    http://blog.soul11201.com/notes/2017/02/22/systemstap-install.html