m0_56789428 2023-08-11 10:19 采纳率: 97.4%
浏览 9
已结题

List<Map<String, Object>> 数组根据时间排序


List<Map<String, Object>> textList = new LinkedList();
        Map<String, Object> map = new LinkedHashMap<>();
        map.put("replytime","2023-07-31 13:00:00");
        map.put("name","下午一点");
        Map<String, Object> map1 = new LinkedHashMap<>();
        map1.put("replytime","2023-07-31 14:00:00");
        map1.put("name","下午二点");
        Map<String, Object> map2 = new LinkedHashMap<>();
        map2.put("replytime","2023-07-31 15:00:00");
        map1.put("name","下午三点");
        textList.add(map);
        textList.add(map1);
        textList.add(map2);
        System.out.println("初始数组:"+textList);

在不建立Bean类的情况下,根据时间字符串 对textList排序?
我要用groovy写
网上列举了用 Collections.sort(list); 但是我里面的map不是个对象,怎么处理?

  • 写回答

5条回答 默认 最新

  • 林间6 2023-08-11 10:46
    关注

    1、新建一个list,然后把你的textList 里面所有map的replytime值存到这个list里面
    2、把这个list排序
    3、新建一个结果List<Map<String, Object>> resTextList,
    4、遍历list,每个值比如是replytime1,在这个循环里面,遍历textList ,取每个map,判断当前map里面的replytime是否等于replytime1,等于则添加到resTextList
    5、让textList =resTextList,就能排序了

            List<Map<String, Object>> textList = new LinkedList();
            Map<String, Object> map = new LinkedHashMap<>();
            map.put("replytime", "2023-07-31 14:00:00");
            map.put("name", "下午一点");
            Map<String, Object> map1 = new LinkedHashMap<>();
            map1.put("replytime", "2023-07-31 13:00:00");
            map1.put("name", "下午二点");
            Map<String, Object> map2 = new LinkedHashMap<>();
            map2.put("replytime", "2023-07-31 15:00:00");
            map1.put("name", "下午三点");
            textList.add(map);
            textList.add(map1);
            textList.add(map2);
            System.out.println("初始数组:" + textList);
    
            List<String> list = new LinkedList<>();
            for (Map<String, Object> stringObjectMap : textList) {
                list.add(stringObjectMap.get("replytime").toString());
            }
            System.out.println("中间数组:" + list);
            Collections.sort(list);
    
            List<Map<String, Object>> resTextList = new LinkedList();
            for (String s : list) {
                for (Map<String, Object> stringObjectMap : textList) {
                    if (stringObjectMap.get("replytime").equals(s)) {
                        resTextList.add(stringObjectMap);
                    }
                }
            }
    
            textList = resTextList;
            System.out.println("转换数组:" + textList);
    

    img


    如果有用,请给个采纳,谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 已采纳回答 8月11日
  • 创建了问题 8月11日

悬赏问题

  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗