hzk11o11k11o 2021-03-05 18:07 采纳率: 30%
浏览 353
已结题

JAVA 两个list合并,且按条件排序问题

现在有如下需求

        HashMap<String,Integer> hashMap1=new HashMap<>();
        List<HashMap<String,Integer>> list1=new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            hashMap1.put("A",i);
            hashMap1.put("B",new Random().nextInt(100));
            hashMap1.put("C",new Random().nextInt(100));
            list1.add(hashMap1);
        }
        HashMap<String,Integer> hashMap2=new HashMap<>();
        List<HashMap<String,Integer>> list2=new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            hashMap2.put("B",new Random().nextInt(100));
            hashMap2.put("C",new Random().nextInt(100));
            list2.add(hashMap2);
        }

这样一来,list1中的元素顺序,已经按照hashmap的A字段排好顺序,但B和C字段是乱序,同理,hashmap2的B和C字段,也是乱序

那么如何在不打破A字段的排序前提下,将list1和list2合并,并将排序以B字段为主,C字段为辅进行排序?

(可以把A字段看成某个业务的工单序号,B和C字段是日期和时间,合并后的list出现以下效果:

1       20200101      93000(时间和日期可以简单地以数字处理,有序号的为list1中的数据,没有的为list2中的数据)

2       20200101      83001

         20200101      83002

         20200101      84015

3       20200102      153030

         20200102      153100

         20200102      153200

       

 

  • 写回答

5条回答 默认 最新

  • 关注

    list添加map代码方法错误、添加的都是同一个map对象,hashMap1=new HashMap<>()应放入for循环中

    可以把list1和list2添加到一个list3列表中,然后自定义Comparator排序方法,按照A先排序、没有A字段的排后边、相同条件下再按照B字段排序、之后再按照C排序、最后根据Collections.sort(list3,comparator)方法根据自定义的comparator排序list3

    评论

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?