有时候不得不对数据手动排序分组,下面是一个简单的例子。
public void testSortListMap(){ List<Map<String, String>> retList = new ArrayList<Map<String, String>>(); Map<String, String> map2 = new HashMap<String, String>(); map2.put("createdate", "2014-10-01 03:00:00"); map2.put("course", "数学"); map2.put("avg", "80"); retList.add(map2); Map<String, String> map3 = new HashMap<String, String>(); map3.put("createdate", "2014-10-01 03:00:01"); map3.put("course", "数学"); map3.put("avg", "80"); retList.add(map3); Map<String, String> map4 = new HashMap<String, String>(); map4.put("createdate", "2014-09-01 03:00:00"); map4.put("course", "数学"); map4.put("avg", "89"); retList.add(map4); Map<String, String> map5 = new HashMap<String, String>(); map5.put("createdate", "2014-10-01 03:00:00"); map5.put("course", "语文"); map5.put("avg", "82"); retList.add(map5); Map<String, String> map6 = new HashMap<String, String>(); map6.put("createdate", "2014-10-01 03:00:00"); map6.put("course", "英语"); map6.put("avg", "83"); retList.add(map6); Map<String, String> map7 = new HashMap<String, String>(); map7.put("createdate", "2014-10-01 03:00:01"); map7.put("course", "语文"); map7.put("avg", "83"); retList.add(map7); Map<String, String> map8 = new HashMap<String, String>(); map8.put("createdate", "2014-09-01 03:00:00"); map8.put("course", "语文"); map8.put("avg", "87"); retList.add(map8); Map<String, String> map9 = new HashMap<String, String>(); map9.put("createdate", "2014-10-01 03:00:01"); map9.put("course", "english"); map9.put("avg", "63"); retList.add(map9); Map<String, String> map10 = new HashMap<String, String>(); map10.put("createdate", "2014-09-01 03:00:00"); map10.put("course", "english"); map10.put("avg", "77"); retList.add(map10); Map<String, String> map14 = new HashMap<String, String>(); map14.put("createdate", ""); map14.put("course", "A2"); map14.put("avg", "75"); retList.add(map14); Map<String, String> map11 = new HashMap<String, String>(); map11.put("createdate", "2014-09-01 04:00:00"); map11.put("course", "A2"); map11.put("avg", "77"); retList.add(map11); Map<String, String> map12 = new HashMap<String, String>(); map12.put("createdate", "2014-09-01 04:00:01"); map12.put("course", "A2"); map12.put("avg", "75"); retList.add(map12); Map<String, String> map13 = new HashMap<String, String>(); map13.put("createdate", "2014-09-01"); map13.put("course", "A2"); map13.put("avg", "75"); retList.add(map13); Map<String, String> map15 = new HashMap<String, String>(); map15.put("createdate", " "); map15.put("course", " "); map15.put("avg", "75"); retList.add(map15); sortMap(retList); } public void sortMap(List<Map<String, String>> retList) { //按时间分组 时间,科目倒序排列 for (Map<String, String> map : retList) { System.out.println(map.get("createdate") + "-----=" + map.get("course")); } System.out.println("-------------------------------------------------"); final DateFormat dateTimeDf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); final DateFormat dateDf = new SimpleDateFormat("yyyy-MM-dd"); Collections.sort(retList, new Comparator<Map<String, String>>() { public int compare(Map<String, String> arg0, Map<String, String> arg1) { String create_0Str = String.valueOf(arg0.get("createdate")); String create_1Str = String.valueOf(arg1.get("createdate")); Date create_0 = null, create_1 = null; try { if (!StringUtils.isBlank(create_0Str)) { if (create_0Str.indexOf(":") != -1) { create_0 = dateTimeDf.parse(create_0Str); } else { create_0 = dateDf.parse(create_0Str); } } if (!StringUtils.isBlank(create_1Str)) { if (create_1Str.indexOf(":") != -1) { create_1 = dateTimeDf.parse(create_1Str); } else { create_1 = dateDf.parse(create_1Str); } } } catch (Exception e) { e.printStackTrace(); } if (create_0 != null && create_1 != null) { if (create_0.after(create_1)) { return -1; } else if (create_0.before(create_1)) { return 1; } else { String course_0 = String.valueOf(arg0.get("course")); String course_1 = String.valueOf(arg1.get("course")); return course_0.compareTo(course_1); } } return create_1Str.compareTo(create_0Str); } }); System.out.println("--------------------排序后-----------------------------"); for (Map<String, String> map : retList) { System.out.println(map.get("createdate") + "-----=" + map.get("course")); } Iterator<Map<String, String>> it = retList.iterator(); String lastDate = null; int order = 1; boolean isStart = true; while (it.hasNext()) { Map<String, String> tmp = it.next(); String tmpD = String.valueOf(tmp.get("createdate")); if (isStart) { lastDate = tmpD; isStart = false; } if (!tmpD.equals(lastDate)) { lastDate = tmpD; order++; } tmp.put("order", String.valueOf(order)); } System.out .println("-------------- 排序分组后----------------------------------"); for (Map<String, String> map : retList) { System.out.println(map.get("order") + "---" + map.get("createdate") + "-----=" + map.get("course")); } }
结果为:
相关推荐
List<Bean>转换为List<Map>, List<Object>转换为List<Object> list转化为 JsonArray ,list转换JsonArray
一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List<Map<String, Object>>结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List<Map<String, Object>...
将list<Map>转换成JavaBean的工具类
spring,cxf,restful发布webservice传递复杂对象,例如List,Map,List<Map>
支持一个List<Map>按照MAP中的一个或者多个Key的value值的中英文来排序,自动识别字符和数字(包括[a-zA-z]?[0-9]*)排序
List<Long>转一维数组 Long[](csdn)————程序
拆分list,将list<bean>中的内容根据某一属性的值对list进行拆分,分组
基于新版本的POI编写的读取Excel文件数据的工具类,可根据绝对路径、File对象、InputSteam对象读取解析Excel文件内容,并返回List<List<String>>格式结果,其中包含对单元格公式的处理。
可将list<T>转化成JSON字符串 使用方法 例: List<自定义类> l; ListChangeToJson.ListChangeToJson classJson = new ListChangeToJson.ListChangeToJson(); classJson.ArrayToJsonAll(l, "数组名字");
List<map>,List<Map<String, Object>>,多字段组合排序。提供一个简易的思路,如果需要进行参考。
js/utils.js<br>IE6.0 测试通过<br><br>List:<br>add(var obj) //添加一个元素<br>remove(var index) //删除一个元素<br>get(var index) //获取一个元素<br>removeAll() //删除所有元素<br>toArray() //获取元素数组...
List<Map<String, List<String>>> data保存到SharedPreference和读取
<P>map集合转化成xml字符串</P> <P>xml字符串转化成map集合</P> <P>list集合转化成xml字符串</P> <P>xml字符串转化成list集合</P>
List<Object>转Json的jar包
C#+List<T>+GridControl实现主从表嵌套
7_4.有集合A={1,2,3,4}和B={1,3,7,9,11},编写一个应用程序输出A和B交集、并集和差集...编写一个应用程序,要求将LinkedList<E>创建的对象写入到文件,然后读出一个LinkedList<E>对象,并遍历LinkedList<E>节点中的数据
使用两个list<Map<String,String>> 求交集和补集。
List集合转换成String,String转List,Map转String,String转Map等 集合与字符串相互转换,可以自己扩展源码,带有注释
一、List<T>对象中的T是值类型的情况(int 类型等) 对于值类型的List直接用以下方法就可以复制: List<T> oldList = new List<T>(); oldList.Add(..); List<T> newList = new List<T>(oldList); 二、List<T>对象...
事情: 从java后台返回List<String>类型数据,用于界面显示。但js中想获取它并操作它。直接使用EL表达式,js把它识别成字符串了。不是我想要的啊。。网上搜了搜大家的解决方案…最好的当然是把List集合转成json格式...