Java 使用 Stream API 将 Push 对象列表分组为 PushVO 对象列表
Map<String, List<Push>> map = new HashMap<>();
pushMapper.getList(map);
List<Push> pushList = map.getOrDefault('result', new ArrayList<>());
List<PushVO> pushVOList = pushList.stream()
.collect(Collectors.groupingBy(Push::getModule))
.entrySet()
.stream()
.map(entry -> PushVO.builder()
.module(entry.getKey())
.messageList(PushConverter.INSTANCE.toPushDTO(entry.getValue()))
.build())
.collect(Collectors.toList());
return pushVOList;
该代码段使用 Java Stream API 来对 Push 对象列表进行分组,并根据分组结果生成 PushVO 对象列表。以下是代码的具体步骤:
- 使用
pushMapper.getList(map)获取 Push 对象列表,并将其存储在pushList中。 - 使用
collect(Collectors.groupingBy(Push::getModule))将pushList按getModule()方法返回的模块进行分组,生成一个Map<String, List<Push>>对象,其中 key 为模块,value 为该模块对应的所有 Push 对象列表。 - 使用
entrySet()方法获取该 Map 对象的 entries,并将它们转换为 Stream 对象。 - 使用
map方法将每个 entry 转换为 PushVO 对象,其中module属性设置为 entry 的 key,messageList属性设置为 entry 的 value 经过PushConverter.INSTANCE.toPushDTO()方法转换为 PushDTO 对象的列表。 - 使用
collect(Collectors.toList())将所有生成的 PushVO 对象收集到一个列表中,并返回该列表。
该代码段使用了 Java Stream API 的强大功能,简化了代码逻辑,并提高了代码可读性。
原文地址: https://www.cveoy.top/t/topic/mUYz 著作权归作者所有。请勿转载和采集!