从此封心@ 2021-10-19 18:05 采纳率: 82.4%
浏览 44
已结题

求写下代码,并每行添加注释

/*
请用代码将list2中的score合并到List中(如果匹配不到则用"-"代替)
*/
package test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Exercise {

public static void main(String[] args) {
    List<Map<String,String>> list1=new ArrayList<>();
    List<Map<String,String>> list2=new ArrayList<>();
    Map<String,String>map;

    map=new HashMap<>();
    map.put("id","1");
    map.put("name","张三");
    list1.add(map);

    map=new HashMap<>();
    map.put("id","2");
    map.put("name","李四");
    list1.add(map);

    map=new HashMap<>();
    map.put("id","3");
    map.put("name","王五");
    list1.add(map);

    map=new HashMap<>();
    map.put("id","2");
    map.put("score","90");
    list2.add(map);

    map=new HashMap<>();
    map.put("id","3");
    map.put("score","88");
    list2.add(map);

    map=new HashMap<>();
    map.put("id","4");
    map.put("score","75");
    list2.add(map);

    //todo 从这里开始
}

}

  • 写回答

1条回答 默认 最新

  • 字菁悠心 2021-10-19 21:08
    关注

    我是这样理解题干的,如果list1里面的id和list2里面的id相同,则更新list1里面的score,代码如下,时间仓促,写的有点着急:

     public static void main(String[] args) {
            List<Map<String,String>> list1=new ArrayList<>();
            List<Map<String,String>> list2=new ArrayList<>();
            Map<String,String>map;
            map=new HashMap<>();
            map.put("id","1");
            map.put("name","张三");
            list1.add(map);
            map=new HashMap<>();
            map.put("id","2");
            map.put("name","李四");
            list1.add(map);
            map=new HashMap<>();
            map.put("id","3");
            map.put("name","王五");
            list1.add(map);
            map=new HashMap<>();
            map.put("id","2");
            map.put("score","90");
            list2.add(map);
            map=new HashMap<>();
            map.put("id","3");
            map.put("score","88");
            list2.add(map);
            map=new HashMap<>();
            map.put("id","4");
            map.put("score","75");
            list2.add(map);
            //todo 从这里开始
    
            for(Map<String,String> map1:list1){
                for(Map.Entry<String, String> entry1:map1.entrySet()){
                    if ("id".equals(entry1.getKey())){
                        boolean bool=false;
                        String score="";
                        for (Map<String,String> map2:list2){
                            for(Map.Entry<String, String> entry:map2.entrySet()){
                                if ("id".equals(entry.getKey()) && entry1.getValue().equals(entry.getValue())){
                                    bool=true;
                                }
                            }
                            if (bool){
                                score = map2.get("score");
                                break;
                            }else{
                                score="-";
                            }
                        }
                        map1.put("score",score);
                    }
                }
            }
            list1.forEach(l->{
                System.out.println("===================================>");
                l.forEach((k,v)->{
                    System.out.println("k:"+k+",v:"+v);
                });
                System.out.println("===================================>");
            });
        }
    
    

    打印list1集合结果如下:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月20日
  • 已采纳回答 10月19日
  • 修改了问题 10月19日
  • 修改了问题 10月19日
  • 展开全部

悬赏问题

  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 请求分析基于spring boot+vue的前后端分离的项目
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?