优化这段代码:private PreRankVo getpreRankVo(String type,String elementType){ ExtremeElement extremeElement = extremeElementMapper.searchOne(TimescaleEnum.HOUR.getCode(), LatestDataElementEnum.PRE_1H.getElementType(), 1); PreRankVo preRankVo = new PreRankVo(); if(Objects.nonNull(extremeElement)) { List<ExtremeData> extremeData1 = extremeDataService.searchList(extremeElement, FilterEnums.GE.getCode()); List<ExtremeData> extremeData = extremeData1.stream().sorted(Comparator.comparing(ExtremeData::getExtremeRank)).limit(5).collect(Collectors.toList()); List<ExtremeRankVo> extremeRankVos = new ArrayList<>(); for (ExtremeData extremeDatum : extremeData) { ExtremeRankVo extremeRankVo = new ExtremeRankVo(); extremeRankVo.setRank(extremeDatum.getExtremeRank()); extremeRankVo.setValue(extremeDatum.getExtremeValue()); SysStationInfo sysStationInfo = stationInfoMapper.selectById(extremeDatum.getStationId()); extremeRankVo.setStationName(sysStationInfo.getStationName()); if(type.equals("0")){ extremeRankVo.setTime(DateUtils.formatLocalDateTime(extremeDatum.getExtremeTime(),DateUtils.DEFAULT_DATE_FORMAT)); }else { extremeRankVo.setTime(DateUtils.formatLocalDateTime(extremeDatum.getExtremeTime(),DateUtils.DATE_TIME_09)); } extremeRankVos.add(extremeRankVo); } preRankVo.setExtremeRankVo(extremeRankVos); preRankVo.setType(type); } return preRankVo; }
时间: 2024-03-09 08:46:12 浏览: 62
Java通过方法查找元素在数组中的位置(允许重复元素)
以下是优化后的代码:
```java
private PreRankVo getpreRankVo(String type, String elementType) {
ExtremeElement extremeElement = extremeElementMapper.searchOne(TimescaleEnum.HOUR.getCode(), LatestDataElementEnum.PRE_1H.getElementType(), 1);
if (extremeElement == null) {
return new PreRankVo();
}
List<ExtremeData> extremeData = extremeDataService.searchList(extremeElement, FilterEnums.GE.getCode()).stream()
.sorted(Comparator.comparing(ExtremeData::getExtremeRank))
.limit(5)
.collect(Collectors.toList());
List<ExtremeRankVo> extremeRankVos = extremeData.stream()
.map(extremeDatum -> {
ExtremeRankVo extremeRankVo = new ExtremeRankVo();
extremeRankVo.setRank(extremeDatum.getExtremeRank());
extremeRankVo.setValue(extremeDatum.getExtremeValue());
SysStationInfo sysStationInfo = stationInfoMapper.selectById(extremeDatum.getStationId());
extremeRankVo.setStationName(sysStationInfo.getStationName());
extremeRankVo.setTime(type.equals("0") ? DateUtils.formatLocalDateTime(extremeDatum.getExtremeTime(), DateUtils.DEFAULT_DATE_FORMAT)
: DateUtils.formatLocalDateTime(extremeDatum.getExtremeTime(), DateUtils.DATE_TIME_09));
return extremeRankVo;
})
.collect(Collectors.toList());
return new PreRankVo(type, extremeRankVos);
}
```
优化点如下:
1. 将 `if (Objects.nonNull(extremeElement))` 改为 `if (extremeElement == null)`,减少了 `Objects.nonNull` 的调用。
2. 使用方法链式调用的方式简化了代码,将多个操作链接在一起,减少了中间变量的使用。
3. 使用了 Java 8 的流式编程,将排序、限制、映射和收集操作都放在了一起,让代码更加简洁。
4. 使用了三目运算符将 `if...else` 语句简化为一行代码。
阅读全文