![](/img/trans.png)
[英]Convert nested for loop logic to for each and java stream
[英]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.