使用 JAVA 8 想要为每个循环逻辑减少给定的代码

Using JAVA 8 want reduce code for given for each loop logic

我正在使用一个对象从剩余 API 中检索数据,并希望将其复制到另一个 Response java 对象。

目前我已经在下面实现了正常的java

public OrganizationalUnitTeamsList getTeamsDetails() {
        List<OrganizationalUnit> organizationalUnitList = organizationalUnitConnector.getOrganizationalUnit();
        OrganizationalUnitTeamsList teamsListResponse = new OrganizationalUnitTeamsList();
        List<TeamDetails> availableTeamList = new ArrayList<>();
        for (OrganizationalUnit organizationalUnit : organizationalUnitList) {
            TeamDetails teams = new TeamDetails();
            teams.setHierarchyLevel(organizationalUnit.getHierarchyLevel());
            teams.setLocationName(organizationalUnit.getLocationName());
            teams.setName(organizationalUnit.getName());
            teams.setShortName(organizationalUnit.getShortName());
            availableTeamList.add(teams);
        }
        teamsListResponse.setTeams(availableTeamList);
        return teamsListResponse;
    }

我希望以上代码以 JAVA 8 种方式转换。

有人可以建议我更高效、代码更简洁的方法来实现上述逻辑吗?

提前致谢。

你可以这样做,

List<TeamDetails> availableTeamList = organizationalUnitList.stream()
   .map(this::convertToTeam)
   .collect(collectors.toList());

然后定义方法 convertToTeam 并在其中放置创建新团队和填充值的逻辑,

private TeamDetails convertToTeam(OrganizationalUnit unit){
TeamDetails team = new teamDetails();
// Setters()
return team;
}

它会做完全相同的事情,但它看起来更干净一些,而且还取决于您的 class 在做什么,您可以选择将方法 convertToTeam 移动到它自己的 class将问题分开。

您应该考虑将此 class OrganizationalUnitTeamsList 重命名为 TeamsResponse 之类的名称,这是 Class

的非常规且令人困惑的名称