簡體   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.

目前我已經用普通的 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 的非常規且令人困惑的名稱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM