两个List<Map>之间的运算疑惑

已知: 后端获取两个list数据
List<Map<String, Object>> list1

{
    "缺陷数量": 1,
    "设备名称": "a",
    "厂家": "A"
}
{
    "缺陷数量": 4,
    "设备名称": "b",
    "厂家": "B"
  }
]

List<Map<String, Object>> list2

  {
    "投运数量": 8,
    "设备名称": "a",
    "厂家": "A"
  },
{
    "投运数量": 8,
    "设备名称": "b",
    "厂家": "B"
  }
]

问题:
需要在controller层完成处理,求出缺陷率,但是不知道如何求解!

List<Map<String, Object>> resultList
JSON数据格式:

{
    "缺陷率": 0.125,
    "设备名称": "a",
    "厂家": "A"
  }
{
    "缺陷率": 0.5,
    "设备名称": "b",
    "厂家": "B"
  }
]

public Object getDefectRateOfAllMainDevice() {
        // 获取总缺陷数据
        List<Map<String, Object>> defectNumber = pocSpPdDefectService.getTheNumberOfAllDeviceDefect();

        // 获取总投运数据
        List<Map<String, Object>> usedNumber = pocSpPdDefectService.getTheNumberOfAllDeviceUsed();
        
        // 传入的数据应确保已经合并同类项,并且没有坏数据,否则应当提前处理数据
        // 缺陷率
        double defectRate = 0.00;
        // 创建返回前端的list
        List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();

        // 创建新插入resultList的map
        Map<String, Object> resultMap;

        // 遍历缺陷map
        for(Map<String,Object> m1:defectNumber) {
            // 创建map实例
            resultMap = new HashMap<String, Object>();

            // 获取map的设备名称
            String equipmentName = m1.get("object_name").toString();

            // 获取map的厂家名称
            String manufactor = m1.get("manufacturer").toString();

            // 循环,将数据类比
            for(Map<String,Object> m2:usedNumber) {
                // 判断厂家和设备名称相同的map
                if (m2.get("object_name").toString().equals(equipmentName) && m2.get("manufacturer").toString().equals(manufactor)) {
                    // 求缺陷率
                    defectRate = Double.parseDouble(m1.get("number_of_defect").toString()) / Double.parseDouble(m2.get("usage_amount").toString());

                    // 放入返回结果
                    resultMap.put("defectRate", defectRate);
                    resultMap.put("object_name", m1.get("object_name"));
                    resultMap.put("manufacturer", m1.get("manufacturer"));
                    // 将新的map插入list
                    resultList.add(resultMap);
                }
            }
        }
        return ApiUtils.result(resultList);
    }

可以把Map<String, Object>看作一个实体类对象。两个对象集合之间求缺陷率。通过遍历两对象集合判断对象中名称相同后,求缺陷率。

思路:
1.遍历List集合;
2.把集合中的元素转换为Map<String, Object>对象,获取缺陷对象;
3.再定义一个List,把所有的缺陷对象放在List;
4.遍历list,统计缺陷率。

public static void main(String[] args) {
        List<Map<String, Object>> list1 = new ArrayList(2) {{
            add(new HashMap(3) {{
                put("缺陷数量", 1);
                put("设备名称", "a");
                put("厂家", "A");
            }});
            add(new HashMap(3) {{
                put("缺陷数量", 4);
                put("设备名称", "b");
                put("厂家", "B");
            }});
        }};
        List<Map<String, Object>> list2 = new ArrayList(2) {{

            add(new HashMap(3) {{
                put("投运数量", 8);
                put("设备名称", "b");
                put("厂家", "B");
            }});
            add(new HashMap(3) {{
                put("投运数量", 8);
                put("设备名称", "a");
                put("厂家", "A");
            }});
        }};

        list1.forEach(item -> {
            loop1: for (String key : item.keySet()) {
                for (Map<String, Object> map : list2) {
                    if (("厂家".equals(key) || "设备名称".equals(key)) && item.get(key).equals(map.get(key))) {
                        item.put("缺陷数量", Double.parseDouble(item.get("缺陷数量").toString()) / Double.parseDouble(map.get("投运数量").toString()));
                        break loop1;
                    }
                }
            }
        });
        System.out.println(list1);
    }

运行效果:
img