方法
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. CentOS 7 通过 yum 安装 nodejs 和 npm

    curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - yum install -y nodejs

  2. 优雅的vue.js

    优雅的vue.js代码 https://www.cnblogs.com/zhengrunlin/p/9164951.html watch 与 computed 的巧妙结合 如上图,一个简单的列表页面. ...

  3. linux {..}用法

    一.2018-{01..07}* 这个意思是 2018-01*   到2018-07*全部输出出来. 二.echo {a..c} a b c

  4. spring@PropertySource用法

    测试例子 package com.hjzgg.auth.config; import org.springframework.beans.factory.annotation.Autowired; i ...

  5. vc++ 在程序中运行另一个程序的方法

    在vc++ 程序中运行另一个程序的方法有三个: WinExec(),ShellExcute()和CreateProcess() 三个SDK函数: WinExec,ShellExecute ,Creat ...

  6. Android-通知栏上的RemoteView

    Android-通知栏上的RemoteView 学习自 <Android开发艺术探索> https://developer.android.google.cn/reference/andr ...

  7. 【BZOJ 1211】 1211: [HNOI2004]树的计数 (prufer序列、计数)

    1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2468  Solved: 868 Description 一 ...

  8. Android ListView CheckBox状态错乱(转)

    转自:http://www.cnblogs.com/wujd/archive/2012/08/17/2635309.html listView中包含checkBox的时候,经常会发生其中的checkB ...

  9. zoj 3204 最小生成树,输出字典序最小的解

    注意排序即可 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring ...

  10. 使用gtest对DLL工程进行单元测试的实践

    前言 关于单元测试的重要性.gtest的优缺点等就不说了.之前项目是没有做单元测试的,在VS的解决方案中,只有一个可执行的工程,其他的工程都是以DLL库的形式提供.本文只针对使用VS对DLL库进行单元 ...