优化这段代码 if (EpointCollectionUtils.isNotEmpty(caseCombineList)) { beanArray.clear(); beanArray.addAll(caseCombineList); logDataJson.put(caseCombineList.get(0).getSql_TableName(), JSON.toJSONStringWithDateFormat(beanArray, EpointDateUtil.DATE_TIME_FORMAT)); } if (EpointCollectionUtils.isNotEmpty(subCaseinfoList)) { beanArray.clear(); beanArray.addAll(subCaseinfoList); logDataJson.put(subCaseinfoList.get(0).getSql_TableName(), JSON.toJSONStringWithDateFormat(beanArray, EpointDateUtil.DATE_TIME_FORMAT)); }
时间: 2023-12-11 08:02:22 浏览: 82
可以将重复的代码抽出来,使用一个函数来处理:
```
private void generateLogDataJson(List<?> list, String tableName) {
if (EpointCollectionUtils.isNotEmpty(list)) {
beanArray.clear();
beanArray.addAll(list);
logDataJson.put(tableName, JSON.toJSONStringWithDateFormat(beanArray, EpointDateUtil.DATE_TIME_FORMAT));
}
}
```
然后在原来的代码中调用这个函数即可:
```
generateLogDataJson(caseCombineList, caseCombineList.get(0).getSql_TableName());
generateLogDataJson(subCaseinfoList, subCaseinfoList.get(0).getSql_TableName());
```
这样可以避免重复代码,并且使得代码更加简洁易读。
相关问题
优化代码 if (StringUtils.isNotEmpty(tabInsInfoBo.getApplyerName())) { tabInsInfoBo.setApplyerName(EncryptFieldUtil.encrypt(tabInsInfoBo.getApplyerName())); } if (StringUtils.isNotEmpty(tabInsInfoBo.getApplyerPageCode())) { tabInsInfoBo.setApplyerPageCode(EncryptFieldUtil.encrypt(tabInsInfoBo.getApplyerPageCode())); }
这段代码可以进行如下的优化:
1. 避免重复调用 `StringUtils.isNotEmpty()` 方法,可以将其结果保存在一个变量中,以减少方法调用次数。
2. 可以考虑使用条件表达式(三元运算符)来简化代码,避免重复的逻辑判断。
3. 如果 `EncryptFieldUtil.encrypt()` 方法是一个耗时的操作,可以考虑将其结果存储在一个临时变量中,以减少方法调用次数。
根据以上优化建议,改进后的代码示例如下:
```java
String applyerName = tabInsInfoBo.getApplyerName();
String applyerPageCode = tabInsInfoBo.getApplyerPageCode();
if (StringUtils.isNotEmpty(applyerName)) {
tabInsInfoBo.setApplyerName(EncryptFieldUtil.encrypt(applyerName));
}
if (StringUtils.isNotEmpty(applyerPageCode)) {
tabInsInfoBo.setApplyerPageCode(EncryptFieldUtil.encrypt(applyerPageCode));
}
```
请注意,以上优化建议是基于代码片段的理解和假设,并不代表整个代码的完整情况。在进行代码优化时,请根据实际情况和需求进行调整。
if (ToolUtil.isNotEmpty(bySoftwareScoreAll) && ToolUtil.isNotEmpty(bySoftwareNumAll)) { Map<Long, SoftwareNumVo> numVoMap = bySoftwareNumAll.stream().collect(Collectors.toMap(SoftwareNumVo::getSoftwareId, a -> a, (k1, k2) -> k1)); bySoftwareScoreAll.forEach(b -> { SoftwareNumVo softwareNumVo = numVoMap.get(b.getSoftwareId()); List<SoftwareNumVo> day7Data = tSoftwareOnlineTimeDao.getDay7Data(b.getSoftwareId()); if (ToolUtil.isNotEmpty(softwareNumVo)) { b.setNumber(softwareNumVo.getNumber()); } else { b.setNumber(0L); } b.setList(day7Data); softwareNumVoList.add(b); }); } else if (ToolUtil.isNotEmpty(bySoftwareScoreAll) && ToolUtil.isEmpty(bySoftwareNumAll)) { bySoftwareScoreAll.forEach(b -> { b.setNumber(0L); }); softwareNumVoList.addAll(bySoftwareScoreAll); } else if (ToolUtil.isNotEmpty(bySoftwareNumAll) && ToolUtil.isEmpty(bySoftwareScoreAll)) { bySoftwareNumAll.forEach(b -> { b.setNum60(0L); b.setNum70(0L); b.setNum80(0L); b.setNum90(0L); }); softwareNumVoList.addAll(bySoftwareNumAll); }这段代码可以优化吗?
这段代码可以进行如下的优化:
1. 在第一个 if 语句中,可以将 `bySoftwareNumAll` 转换为 Map,然后直接在 foreach 循环中使用该 Map,而不需要每次都调用 `numVoMap.get(b.getSoftwareId())`,这样可以减少时间复杂度。
2. 在第二个和第三个 if 语句中,可以将 `bySoftwareScoreAll` 和 `bySoftwareNumAll` 的数据结构进行统一,这样可以避免在循环中进行判断,从而提高代码的可读性和性能。
下面是优化后的代码:
```
Map<Long, SoftwareNumVo> numVoMap = bySoftwareNumAll.stream().collect(Collectors.toMap(SoftwareNumVo::getSoftwareId, a -> a, (k1, k2) -> k1));
for (SoftwareScoreVo b : bySoftwareScoreAll) {
SoftwareNumVo softwareNumVo = numVoMap.get(b.getSoftwareId());
List<SoftwareNumVo> day7Data = tSoftwareOnlineTimeDao.getDay7Data(b.getSoftwareId());
b.setNumber(softwareNumVo != null ? softwareNumVo.getNumber() : 0L);
b.setList(day7Data);
softwareNumVoList.add(b);
}
for (SoftwareNumVo b : bySoftwareNumAll) {
b.setNum60(0L);
b.setNum70(0L);
b.setNum80(0L);
b.setNum90(0L);
}
softwareNumVoList.addAll(bySoftwareNumAll);
```
这个优化后的代码通过将 `bySoftwareNumAll` 转换为 Map,并且将 `bySoftwareScoreAll` 和 `bySoftwareNumAll` 的数据结构进行统一,简化了代码,也提高了性能。
阅读全文