简体   繁体   English

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

[英]Using JAVA 8 want reduce code for given for each loop logic

I am retrieving data from rest API with a object and want copy that to another Response java object. I am retrieving data from rest API with a object and want copy that to another Response java object.

Currently I have implemented below with normal 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;
    }

I want above code to be converted in JAVA 8 way.我希望上面的代码以 JAVA 8 方式转换。

Can some suggest me more efficient and code concise way to achieve above logic?有人可以建议我更有效和代码简洁的方式来实现上述逻辑吗?

Thank you in advance.先感谢您。

You can do like this,你可以这样做,

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

Then define method convertToTeam and put the logic of creating new team and populate values there,然后定义方法convertToTeam并将创建新团队的逻辑和填充值放在那里,

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

It will do exactly same thing,but it looks bit cleaner and also depending on what your class is doing you could choose to move the method convertToTeam to its own class to seperate out the concern.它会做完全相同的事情,但它看起来更干净一些,并且还取决于您的 class 正在做什么,您可以选择将方法convertToTeam移动到它自己的 class 以分离出问题。

You should consider renaming this class OrganizationalUnitTeamsList to something like TeamsResponse it's a unconventional and confusing name for a Class您应该考虑将此 class OrganizationalUnitTeamsList重命名为类似TeamsResponse这是 Class 的非常规且令人困惑的名称

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM