zoukankan      html  css  js  c++  java
  • 面试题

    第二题解答答案:

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

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

    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

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

      

  • 相关阅读:
    spark 1.1.0 单机与yarn部署
    hadoop 2.5.1单机安装部署伪集群
    perl C/C++ 扩展(五)
    perl C/C++ 扩展(一)
    perl C/C++ 扩展(二)
    perl C/C++ 扩展(三)
    perl C/C++ 扩展(四)
    SpiderMonkey 入门学习(一)
    新装centos 6.5 基本配置
    Linux(16):Shell编程(3)
  • 原文地址:https://www.cnblogs.com/Aaronqcd/p/12467483.html
Copyright © 2011-2022 走看看