我的目标是将所有团队成员与团队领导人联系起来,但要分层次进行。比尔是一位顶尖的队长,约翰和艾丽斯比他低一级,玛丽比约翰和爱丽丝低一级,等等。
Team leader Team members
========= ==========
Bob ""
Marry Bob
John Marry
Alice Marry
Bill John,Alice所以我用
final static SetMultimap<String, String> teamMap = HashMultimap
.create();我想给每一位队长一个完整的团队成员名单。
eg : For Alice as a Team Leader, her full team members list is Marry, Bob.
For Bill as a Team Leader, his full team members list is John, Alice, Marry, Bob由于递归似乎解决了我的问题,所以我使用以下方法
public static List<String> getTeamMembers(String teamLeader) {
List<String> teamMembers = teamMembersMap.get(teamLeader);
fullTeamMembers.addAll(teamMembers);
for (String teamMember : teamMembers) {
if (teamMember.equalsIgnoreCase("")) {
**// if teamMember is John go to Marry then Bob and return recursively
// without treating Alice loop!**
return fullTeamMembers;
} else {
return getTeamMembers(teamMember);
}
}
**// compiler error otherwise force to return something here
// maybe in case teamMembers is empty****
return null;
}还有我的电话
for (String teamLeader : teamMembersMap.keySet()) {
System.out.println("********************************");
System.out.println("**************teamLeader :" + teamLeader);
fullTeamMembers.clear();
List<String> fullTeamMembers = getTeamMembers(teamLeader);
teamMembersMap.putAll(teamLeader, fullTeamMembers);
}但是,我对代码中注释中的两点进行了讨论:循环问题和返回编译器错误。欢迎任何帮助以更好的方式解决这个问题。
发布于 2014-01-04 23:15:10
当然,它告诉您要在那里放置一个return语句。您的teamMembers可以是空的,甚至是空的。除了一些缺失的空/空检查之外,您的代码没有任何问题。
如果你真的想要一个改进和无效的安全,下面是我的建议:
public static List<String> getTeamMembers(final String teamLeader)
{
final List<String> result = new ArrayList<>(); // fullTeamMembers
final List<String> teamMembers = teamMembersMap.get(teamLeader); // Can be NULL or empty
if (teamMembers == null || teamMembers.isEmpty())
return result; // Return empty array
// Else, carry on
result.addAll(teamMembers);
for (String teamMember : result)
if ( !teamMember.equalsIgnoreCase("") )
return getTeamMembers(teamMember); // Go recursively if not ""
// Return result from map
return result;
}https://stackoverflow.com/questions/20927873
复制相似问题