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;
    }
}

代码说明:

  1. 使用 var 关键字简化类型声明。
  2. 使用静态导入简化代码。
  3. 将流操作链拆分成多行,提高代码可读性。

优化建议:

  1. 如果 pushList 数据量较大,可以考虑使用并行流提高性能。
  2. 可以根据实际情况选择合适的 PushConverter 实现,以确保数据转换的效率。
  3. 可以使用更具描述性的变量名,例如 modulePushMap 可以改为 pushByModule
  4. 如果需要,可以添加异常处理机制以确保代码的健壮性。
Java 使用流操作分组 Push 对象并转换为 PushVO 列表

原文地址: https://www.cveoy.top/t/topic/mVwE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录