List<RelayLinkReport> linkReportList = new ArrayList<>(); for (Map.Entry<String, List<PortReportResultVo>> entry : relayLinkAndPortMap.entrySet()) { // key为链路组 String key = entry.getKey(); String[] split = key.split("@"); String tempKey = split[0] + "@" + split[1]; RelayLinkReport linkReport = new RelayLinkReport(); RelayLinkReport relayLinkReport = linkGroupDevPortMap.get(tempKey); BeanUtil.copyProperties(relayLinkReport,linkReport); // value是这个链路组下的端口详情数据,已经查过es并且组装完成,链路组查询接口这个对这个链路下的端口做汇总,链路组导出不需要汇总,前面已经封装好了,这里可以自由选择是否汇总 List<PortReportResultVo> values = entry.getValue(); for (PortReportResultVo trDevportVO: values){ this.setRelayLinkTotalValue(linkReport,trDevportVO); } linkReportList.add(linkReport); } 优化这段代码
时间: 2024-01-23 16:02:00 浏览: 85
ArrayList,LinkList链表接口实现(源码+部署说明+系统文档+源码解释).zip
这段代码可以进行如下优化:
1. 将链路组转换为Map,并将操作放到一个方法中,提高代码可读性和复用性。
2. 不需要创建临时变量 tempKey,可以直接使用 entry.getKey() 进行操作。
3. 在遍历链路组下的端口详情数据时,可以使用 foreach 循环进行操作,提高代码可读性。
4. 可以使用 Lambda 表达式代替 foreach 循环中的操作,提高代码简洁度。
修改后的代码如下所示:
```
List<RelayLinkReport> linkReportList = new ArrayList<>();
Map<String, RelayLinkReport> linkGroupDevPortMap = ... // 链路组数据
Map<String, List<PortReportResultVo>> relayLinkAndPortMap = ... // 链路组下的端口详情数据
relayLinkAndPortMap.forEach((key, values) -> {
RelayLinkReport linkReport = new RelayLinkReport();
RelayLinkReport relayLinkReport = linkGroupDevPortMap.get(key);
BeanUtil.copyProperties(relayLinkReport, linkReport);
values.forEach(trDevportVO -> {
this.setRelayLinkTotalValue(linkReport, trDevportVO);
});
linkReportList.add(linkReport);
});
```
阅读全文