for(Map.Entry<String, List<TrDevportVO>> entry : relayLinkAndPortListMap.entrySet()) { String key = entry.getKey(); List<TrDevportVO> values = entry.getValue(); List<DevPortReportEsDTO> esDTOS = new ArrayList<>(); for (TrDevportVO trDevportVO: values){ String tempKey = trDevportVO.getDevId() + trDevportVO.getPortName(); DevPortReportEsDTO reportEsDTO = reportEsDTOMap.get(tempKey); esDTOS.add(reportEsDTO); relayLinkAndPortListMap1.put(key,esDTOS); } System.out.println("Key: " + key); System.out.println("Value: " + values); } 这段代码有什么bug
时间: 2023-12-10 20:40:56 浏览: 36
这段代码存在一个逻辑错误,即在循环内部向 `relayLinkAndPortListMap1` 中添加元素时,没有考虑到同一 `key` 对应的 `esDTOS` 会被覆盖。正确的代码应该将 `relayLinkAndPortListMap1.put(key,esDTOS);` 放在循环外部,如下所示:
```
for(Map.Entry<String, List<TrDevportVO>> entry : relayLinkAndPortListMap.entrySet()) {
String key = entry.getKey();
List<TrDevportVO> values = entry.getValue();
List<DevPortReportEsDTO> esDTOS = new ArrayList<>();
for (TrDevportVO trDevportVO: values){
String tempKey = trDevportVO.getDevId() + trDevportVO.getPortName();
DevPortReportEsDTO reportEsDTO = reportEsDTOMap.get(tempKey);
esDTOS.add(reportEsDTO);
}
relayLinkAndPortListMap1.put(key,esDTOS);
System.out.println("Key: " + key);
System.out.println("Value: " + values);
}
```