Java 使用流操作分组 Push 对象并转换为 PushVO 列表
import static java.util.stream.Collectors.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class PushGroupConverter {
public List<PushVO> convert(PushMapper pushMapper) {
var map = new HashMap<String, List<Push>>();
pushMapper.getList(map);
var pushList = map.getOrDefault("result", new ArrayList<>());
var modulePushMap = pushList.stream()
.collect(groupingBy(Push::getModule));
var pushVOList = modulePushMap.entrySet().stream()
.map(entry -> PushVO.builder()
.module(entry.getKey())
.messageList(PushConverter.INSTANCE.toPushDTO(entry.getValue()))
.build())
.collect(toList());
return pushVOList;
}
}
代码说明:
- 使用
var关键字简化类型声明。 - 使用静态导入简化代码。
- 将流操作链拆分成多行,提高代码可读性。
优化建议:
- 如果
pushList数据量较大,可以考虑使用并行流提高性能。 - 可以根据实际情况选择合适的
PushConverter实现,以确保数据转换的效率。 - 可以使用更具描述性的变量名,例如
modulePushMap可以改为pushByModule。 - 如果需要,可以添加异常处理机制以确保代码的健壮性。
原文地址: https://www.cveoy.top/t/topic/mVwE 著作权归作者所有。请勿转载和采集!