@Override public List<HospitalizationDispensingOrderVO> getDrugList(Date medicineTime) { Date date = DateUtil.getDate(medicineTime); List<HospitalizationDispensingOrderVO> details = hospitalizationDispensingOrderMapper.getDetails(date); //根据药品名称汇总 Map<Long, HospitalizationDispensingOrderVO> collect = details.stream().collect(Collectors.toMap(x -> x.getDispensingNumber(), x -> x, (x1, x2) -> { x1.setDispensingNumber(x1.getDispensingNumber()); x1.setDiseassAreaId(x1.getDiseassAreaId()); x1.setDiseassAreaName(x1.getDiseassAreaName()); x1.setApplyDate(x1.getApplyDate()); x1.setApplicantName(x1.getApplicantName()); return x1; })); List<HospitalizationDispensingOrderVO> hospitalizationReceivingMedicineList = collect.entrySet().stream().map(x -> x.getValue()).collect(Collectors.toList()); return hospitalizationReceivingMedicineList; }
时间: 2024-01-04 10:04:58 浏览: 70
以下是一些可能的优化建议:
1. 避免重复调用相同的方法,例如在方法内部多次调用 `DateUtil.getDate(medicineTime)` 可以通过将其放在方法外部,只调用一次来避免重复计算。
2. 简化代码逻辑,例如在 Map 的 merge 函数中,可以直接返回其中一个值,而不需要手动设置属性值。
3. 使用方法引用,例如 `details.stream().collect(Collectors.toMap(HospitalizationDispensingOrderVO::getDispensingNumber, Function.identity(), (x1, x2) -> x1))` 可以代替 lambda 表达式。
4. 考虑使用并行流,如果数据量较大,可以通过使用并行流来提高性能。
以下是优化后的代码:
```
@Override
public List<HospitalizationDispensingOrderVO> getDrugList(Date medicineTime) {
Date date = DateUtil.getDate(medicineTime);
List<HospitalizationDispensingOrderVO> details = hospitalizationDispensingOrderMapper.getDetails(date);
// 根据药品名称汇总
Map<Long, HospitalizationDispensingOrderVO> collect = details.parallelStream()
.collect(Collectors.toMap(
HospitalizationDispensingOrderVO::getDispensingNumber,
Function.identity(),
(x1, x2) -> x1
));
return new ArrayList<>(collect.values());
}
```
阅读全文