List<String> monthByYear = DateUtils.getMonthByYear(year); for (int i = 0; i < monthByYear.size(); i++) { String tempEsIndex = StrUtil.join(StrUtil.UNDERLINE, TP_PORTFLUX, sysId1, year, monthByYear.get(i), CommonEnum.STAT_MONTH.getCode()); esIndex = tempEsIndex + ","; } 优化这段代码
时间: 2023-11-22 10:53:06 浏览: 89
可以优化成以下这样:
```
List<String> monthByYear = DateUtils.getMonthByYear(year);
StringBuilder esIndexBuilder = new StringBuilder();
for (String month : monthByYear) {
String tempEsIndex = StrUtil.join(StrUtil.UNDERLINE, TP_PORTFLUX, sysId1, year, month, CommonEnum.STAT_MONTH.getCode());
esIndexBuilder.append(tempEsIndex).append(",");
}
String esIndex = esIndexBuilder.toString();
```
这里使用了 StringBuilder 来拼接字符串,避免了每次迭代都创建一个新的字符串对象,提高了效率。另外,使用了 foreach 循环来遍历月份,代码更加简洁易读。
相关问题
List<String> monthByYear = DateUtils.getMonthByYear(year); StringBuilder esIndexBuilder = new StringBuilder(); for (String monthStr : monthByYear) { String tempEsIndex = StrUtil.join(StrUtil.UNDERLINE, TP_PORTFLUX, sysId1, year, monthStr, CommonEnum.STAT_MONTH.getCode()); esIndexBuilder.append(tempEsIndex).append(","); } esIndex = esIndexBuilder.toString(); 最后一位没有逗号
可以使用以下代码去掉最后一个逗号:
```
List<String> monthByYear = DateUtils.getMonthByYear(year);
StringBuilder esIndexBuilder = new StringBuilder();
for (int i = 0; i < monthByYear.size(); i++) {
String monthStr = monthByYear.get(i);
String tempEsIndex = StrUtil.join(StrUtil.UNDERLINE, TP_PORTFLUX, sysId1, year, monthStr, CommonEnum.STAT_MONTH.getCode());
esIndexBuilder.append(tempEsIndex);
if (i != monthByYear.size() - 1) {
esIndexBuilder.append(",");
}
}
esIndex = esIndexBuilder.toString();
```
这样就可以保证最后一位没有逗号了,同时也能保证其他位置都有逗号。
List<PortReportResultVo> reportResultVoList = response.getReportResultVoList(); for(PortReportResultVo reportResultVo:reportResultVoList){ reportResultVo.setGatherTime(DateUtils.getTimeStrByTimestampStr(reportResultVo.getGatherTime())); } 优化这段代码
这段代码可以使用 Java 8 的 Stream API 进行优化,可以将循环改为一行 Lambda 表达式的形式,代码如下:
```
response.getReportResultVoList().forEach(reportResultVo -> reportResultVo.setGatherTime(DateUtils.getTimeStrByTimestampStr(reportResultVo.getGatherTime())));
```
这样可以避免使用临时变量,提高代码的简洁度和可读性。
阅读全文