`
53873039oycg
  • 浏览: 842011 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

[代码片段]List<Map>按时间分组,按时间科目降序排列

    博客分类:
  • java
 
阅读更多
有时候不得不对数据手动排序分组,下面是一个简单的例子。

      

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"));
		}
	}

 

    结果为:
   
2014-10-01 03:00:00-----=数学
2014-10-01 03:00:01-----=数学
2014-09-01 03:00:00-----=数学
2014-10-01 03:00:00-----=语文
2014-10-01 03:00:00-----=英语
2014-10-01 03:00:01-----=语文
2014-09-01 03:00:00-----=语文
2014-10-01 03:00:01-----=english
2014-09-01 03:00:00-----=english
-----=A2
2014-09-01 04:00:00-----=A2
2014-09-01 04:00:01-----=A2
2014-09-01-----=A2
 -----= 
-------------------------------------------------
--------------------排序后-----------------------------
2014-10-01 03:00:01-----=english
2014-10-01 03:00:01-----=数学
2014-10-01 03:00:01-----=语文
2014-10-01 03:00:00-----=数学
2014-10-01 03:00:00-----=英语
2014-10-01 03:00:00-----=语文
2014-09-01 04:00:01-----=A2
2014-09-01 04:00:00-----=A2
2014-09-01 03:00:00-----=english
2014-09-01 03:00:00-----=数学
2014-09-01 03:00:00-----=语文
2014-09-01-----=A2
 -----= 
-----=A2
-------------- 排序分组后----------------------------------
1---2014-10-01 03:00:01-----=english
1---2014-10-01 03:00:01-----=数学
1---2014-10-01 03:00:01-----=语文
2---2014-10-01 03:00:00-----=数学
2---2014-10-01 03:00:00-----=英语
2---2014-10-01 03:00:00-----=语文
3---2014-09-01 04:00:01-----=A2
4---2014-09-01 04:00:00-----=A2
5---2014-09-01 03:00:00-----=english
5---2014-09-01 03:00:00-----=数学
5---2014-09-01 03:00:00-----=语文
6---2014-09-01-----=A2
7--- -----= 
8--------=A2
 
分享到:
评论

相关推荐

    List转换为List

    以上知识点介绍了List&lt;Bean&gt;转换为List&lt;Map&gt;的基本概念、步骤、以及实际应用的代码示例。同时,也涉及了List&lt;Object&gt;转换和list转换为JsonArray的相关知识,这些内容是Java开发中常见的数据结构转换方法,对于前端和...

    将list转换成JavaBean

    将list&lt;Map&gt;转换成JavaBean的工具类

    List<Map>转化为List工具类

    一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List&lt;Map&lt;String, Object&gt;&gt;结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List&lt;Map&lt;String, Object&gt;...

    List<Map<String, List>> data保存到SharedPreference和读取

    在上述代码中,`saveListMapsToSharedPreferences`方法将`List&lt;Map&lt;String, List&lt;String&gt;&gt;&gt;`转换为JSON字符串并保存到SharedPreference,`readListMapsFromSharedPreferences`则读取JSON字符串并反序列化回原数据...

    ResultSet 转为listmap

    ResultSet 转为 List&lt;Map&gt; ResultSet 转为 List&lt;Map&gt; 是一种常见的数据处理操作。在 Java 中,使用 JDBC 连接数据库时,通常会返回一个 ResultSet 对象,该对象包含了查询结果集的所有记录。为了方便数据处理和使用...

    List<Long>转一维数组 Long[](csdn)————程序.pdf

    List&lt;Long&gt; ids = invoiceApiOrders.stream().map(InvoiceApiOrder::getId).collect(Collectors.toList()); /*创建数组*/ Long[] orderIds = new Long[ids.size()]; /*数组赋值*/ orderIds = ids.toArray(orderIds);...

    List<Map>中英文排序

    支持一个List&lt;Map&gt;按照MAP中的一个或者多个Key的value值的中英文来排序,自动识别字符和数字(包括[a-zA-z]?[0-9]*)排序

    FreeMarker 遍历list

    在FreeMarker中,遍历`List&lt;Map&lt;String&gt;&gt;`是常见的操作,尤其在处理从后端传来的复杂数据结构时。这篇博客链接虽然无法直接访问,但从标题来看,我们可以推测其内容可能涉及如何在FreeMarker模板中遍历一个包含Map...

    list转化成JSON字符串

    可将list&lt;T&gt;转化成JSON字符串 使用方法 例: List&lt;自定义类&gt; l; ListChangeToJson.ListChangeToJson classJson = new ListChangeToJson.ListChangeToJson(); classJson.ArrayToJsonAll(l, "数组名字");

    将list中的内容根据某一属性的值对list进行拆分

    拆分list,将list&lt;bean&gt;中的内容根据某一属性的值对list进行拆分,分组

    js模拟list和map

    js/utils.js&lt;br&gt;IE6.0 测试通过&lt;br&gt;&lt;br&gt;List:&lt;br&gt;add(var obj) //添加一个元素&lt;br&gt;remove(var index) //删除一个元素&lt;br&gt;get(var index) //获取一个元素&lt;br&gt;removeAll() //删除所有元素&lt;br&gt;toArray() //获取元素数组...

    List&lt;map&gt;多字段组合排序

    List&lt;map&gt;,List&lt;Map&lt;String, Object&gt;&gt;,多字段组合排序。提供一个简易的思路,如果需要进行参考。

    C#+List+GridControl实现主从表嵌套

    `List&lt;T&gt;`是.NET Framework中`System.Collections.Generic`命名空间下的一个泛型集合类,它实现了`IList&lt;T&gt;`、`ICollection&lt;T&gt;`和`IEnumerable&lt;T&gt;`接口。`List&lt;T&gt;`是用于存储强类型对象的动态数组,允许快速的插入和...

    List数据绑定

    在.NET框架中,`List&lt;T&gt;`是泛型集合类,它是`System.Collections.Generic`命名空间下的一个重要组件,用于存储一组特定类型的对象。这个类实现了`IList&lt;T&gt;`、`ICollection&lt;T&gt;`和`IEnumerable&lt;T&gt;`接口,使得它具有...

    spring,cxf,restful发布webservice传递List,Map,List&lt;Map&gt;

    本文将深入探讨如何使用这些技术来发布Web服务,特别是涉及复杂对象如List、Map及List&lt;Map&gt;的传递。 首先,Spring框架是一个Java企业级应用开发的强大工具,它提供了众多模块,包括Spring MVC用于Web开发。在Spring...

    c#list添加数据

    标题“c#list&lt;&gt;添加数据”指的是如何向已经实例化的`List&lt;T&gt;`对象中添加数据。描述中提到“list&lt;&gt;.count==0”的情况,即列表为空时,需要向列表中添加数据。下面我们将详细讲解如何操作。 首先,我们来看代码中的`...

    map/list集合转化成xml字符串 xml字符串转化成map/list集合

    Map&lt;String, String&gt; result = new HashMap&lt;&gt;(); NodeList nodeList = root.getChildNodes(); for (int i = 0; i &lt; nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node.getNodeType() == ...

    C# 解析json格式数据为IList

    例如,如果你有一个JSON数组,你可能希望将其解析为`IList&lt;string&gt;`或`IList&lt;MyCustomClass&gt;`,具体取决于JSON数据的内容。 C#中解析JSON通常使用的是Json.NET库,这是一个非常流行且功能强大的开源库,可以方便地...

    C# xmlToList xml转换成对象

    `T`代表你想要存储的对象类型,例如`List&lt;int&gt;`表示存储整数的列表,`List&lt;string&gt;`则表示字符串列表。 **方法一:使用XmlNodeReader** 第一种方法是通过`XmlNodeReader`来逐个读取XML节点,并将其转化为指定的...

    嵌套Map或者List获取key、value值

    List&lt;Map&lt;String, String&gt;&gt; userList = new ArrayList&lt;&gt;(); for (Map&lt;String, String&gt; user : userList) { String userName = user.get("name"); String userEmail = user.get("email"); // 处理每个用户的姓名和...

Global site tag (gtag.js) - Google Analytics