面试题

 

第二题解答答案:

1的代码还可以更简单一点

1.这个时间复杂度为2N

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public List<Map<String, Object>> mergeList3(List<Map<String, Object>> list1, List<Map<String, Object>> list2,
            String fieldName) {
        Map<Object, Map<String, Object>> temp = new HashMap<>();
        list1.forEach(i -> processItem(i, temp, fieldName));
        list2.forEach(i -> processItem(i, temp, fieldName));
        List<Map<String, Object>> resMap = new ArrayList<>(temp.values());
        return resMap;
    }
     
    public void processItem(Map<String, Object> map, Map<Object, Map<String, Object>> resultMap,
            String fieldName) {
        if(map.get(fieldName) != null) {
            Map<String, Object> objMap = resultMap.get(map.get(fieldName));
            if(objMap != null) {
                objMap.putAll(map);
            }
            else {
                resultMap.put(map.get(fieldName), map);
            }
        }
    }

  

2.这个时间复杂度为N^2

1
2
3
4
5
6
7
8
9
10
11
public List<Map<String, Object>> mergeList(List<Map<String, Object>> list1, List<Map<String, Object>> list2,
        String fieldName) {
    for (int i=0; i<list1.size(); i++) {
        for (int j=0; j<list2.size(); j++) {
            if(list1.get(i).get(fieldName).equals(list2.get(j).get(fieldName))) {
                list1.get(i).putAll(list2.get(j));
            }
        }
    }
    return list1;
}

  

posted @   Aaronqcd  阅读(102)  评论(0编辑  收藏  举报
编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
点击右上角即可分享
微信分享提示