У меня есть следующие 2 объекта Team
и Group
.У меня есть стандартные методы получения и получения методов в каждом из этих классов, и я не могу их изменять.
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) Я знаю, что должен использовать рекурсию, но я изо всех сил пытаюсь найти решение.Как мне этого добиться?
РЕДАКТИРОВАТЬ
Я обновил свой код, и теперь я могу получить доступ к первому уровню детей, но не к другим уровням