请问如下代码还可以在简洁一些嘛
List list = new LinkedList<>();
lbProjects.forEach(temp -> {
AiSkillThoVO aiVo = new AiSkillThoVO();
aiVo.setProjectName(temp.getProjectName());
aiVo.setVoList(getAiSkillMenu(temp.getId().longValue()));
list.add(aiVo);
});
return list;
return lbProjects.strem.map(v->{
return new AiSkillThoVO(){{
setProjectName(v.getProjectName());
setVoList(getAiSkillMenu(v.getId().longValue()));
}};
}).collect(collectors.toList());
一行就搞定了,我是手打的,看有没有大小写或者是少了符号的地方改一下就行了。
这段代码还要继续优化的点,就是分离 AiSkillThoVO 对象的创建过程:
Function<LbProject, AiSkillThoVO> converter = proj -> {
AiSkillThoVO aiVo = new AiSkillThoVO();
aiVo.setProjectName(proj.getProjectName());
aiVo.setVoList(getAiSkillMenu(proj.getId().longValue()));
return aiVo;
};
List<AiSkillThoVO> list = lbProjects.stream()
.map(converter).collect(Collectors.toCollection(LinkedList::new));
挺好的代码了啊
再简洁的话,就是给AiSkillThoVO类加个有参构造函数,将下面两个set值作为参数
List<AiSkillThoVO> list = new LinkedList<>();
lbProjects.forEach(temp -> {
AiSkillThoVO aiVo = new AiSkillThoVO(temp.getProjectName(),getAiSkillMenu(temp.getId().longValue()));
list.add(aiVo);
});
return list;
或者再简洁
List<AiSkillThoVO> list = new LinkedList<>();
lbProjects.forEach(temp -> {
list.add(new AiSkillThoVO(temp.getProjectName(),getAiSkillMenu(temp.getId().longValue()));
});
return list;
也不要过分追求简洁,可读性的优先级更高,保证可读性的前提下再去考虑简洁性
学到了,谢谢大家