请问如下代码还可以在简洁一些嘛?

请问如下代码还可以在简洁一些嘛

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;

也不要过分追求简洁,可读性的优先级更高,保证可读性的前提下再去考虑简洁性

学到了,谢谢大家