我有以下 2 个对象Team和Group. 我在每个类中都有标准的 getter setter 和 toString 方法,并且不允许修改它们。
public class Team {
private List<Team> teams;
private List<TeamMember> members;
private String teamId;
}
public class Group {
private List<GroupMember> groupMember;
private List<Group> groups;
private String groupId;
}
团队可以有一个List<Team>列表类型作为属性,其中List<Group>可以有一个List<Group>作为属性。
团队的示例列表如下所示:
我想创建反映相同结构的组列表TeamList。
这是我到目前为止所得到的。
@Service
public class GroupService {
@Autowired
TeamService teamService;
public List<Group> createGroupList(){
List<Group> groups = Collections.emptyList();
List<Team> teams = teamService.createTeamList();
if (teams != null && !teams.isEmpty()) {
groups = teams.stream().map(t -> {
Group group = new Group();
group.setGroupId(t.getTeamId());
//this is to be modified
group.setGroups(getSubgroups(teams, group.getGroupId()));
return group;
}).collect(Collectors.toList());
}
return groups;
}
private List<Group> getSubgroups(List<Team> teams, String parentGroupName) {
Optional<Team> parentTeam = teams.stream()
.filter(t -> t.getTeamId().equalsIgnoreCase(parentGroupName)).findFirst();
if(parentTeam.isPresent()){
List<Team> subTeams = new ArrayList<>();
List<Group> lstOfGroups = new ArrayList<>();
System.out.println("parentname " + parentTeam.get().getTeamId());
if(parentTeam.get().getTeams() != null){
parentTeam.get().getTeams().stream().forEach(r -> {
subTeams.add(r);
});
}
subTeams.stream().forEach(st -> {
Group gr = new Group();
gr.setGroupId(st.getTeamId());
lstOfGroups.add(gr);
});
return lstOfGroups;
}
return null;
}
}
我的想法是修改 getSubgroups 方法来为每个给定的路径正确设置子组。(例如:getSubgroubs 可以返回 team2,并将其所有子组设置为 team7)我知道我必须使用递归,但我正在努力寻找解决方案。我怎样才能做到这一点?
隔江千里
梦里花落0921
相关分类