好的,你好。首先,如果我的英语在任何时候看起来很差,请原谅;不是我的母语。此外,请原谅我任何可怕的编码错误,但我是Java /编码的初学者。
让我解释一下这个问题是什么,希望你可以帮助我:
有一个简化的社交网络,其中包含用户和组。用户也可以成为朋友。
有常规组和封闭组(组的子类)。区别在于,在封闭组中,您只能在以下情况下加入:1)您是要加入的组的第一个成员,或2)如果您已经在该组中有朋友(在这种情况下,显然有人已经加入了该组之前你这样条件#1失败了。)
这就是事情。基本上,每个用户都有一个ArrayList来存储他的朋友(名为“friendList”)。类“Group”中还有一个ArrayList,用于存储在组中注册的用户(名为“members”)。
说到ClosedGroups,我有一个“if”来检查该组的ArrayList是否为空。如果是,那么我添加用户。从那时起,我需要检查想要加入的用户是否存在于已有成员的好友列表中,这是我真的不知道该怎么做的地方。 “ClosedGroup”类的“addMember”方法如下所述。
public void addMember(User aUser){
if(members.isEmpty()){
members.add(aUser);
aUser.addGroup(this);
System.out.println(aUser.getName() + " has successfully been enrolled in group " + this.getName());
}
else if(){
members.add(aUser);
aUser.addGroup(this);
System.out.println(aUser.getName() + " has successfully been enrolled in group " + this.getName());
}
else{
System.out.println("FAILED: " + aUser.getName() + " cannot be enrolled in group " + this.getName());
}
那么,我究竟需要输入“else if”?
此外,还要求在“User”类中使用一个方法,该方法将返回true(如果2个用户是朋友)或false,我也可能做错了。
帮助,亲切的开发者。
提前致谢。
编辑:脱节就像一个魅力。非常感谢你的建议!
答案 0 :(得分:2)
查看Collections类的不相交方法:http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#disjoint%28java.util.Collection,%20java.util.Collection%29
如果没有相同的元素,则返回true。
if(!Collections.disjoint(members, aUser.getFriends()))
答案 1 :(得分:1)
您需要以下内容:
List<User> friends = aUser.getFriends();
List<User> registeredMembers = members ...
现在检查很简单:
if (Collections.disjoint(friends, registeredMembers) {
... no friends in group
有关我使用的方法的更多信息,请访问here。
并提示:你不希望将所有这些检查放入单一方法中。相反,您应该创建小辅助方法来检查这些条件。 像:
private boolean hasUserFriendsInThisGroup(User userToCheck) {
return ... // result based on check as above
而且:打印输出 不就足够了。您会看到,当您的操作失败时,您只会注意到您是否密切关注您的消息。那是不非常可靠。相反,您希望确保调用该方法的代码理解出错了。例如,您可以抛出异常以指示&#34;操作失败&#34;。因此,使用该方法的代码......有机会向用户提供正确的错误消息,例如!
答案 2 :(得分:0)
你需要做的是类似的事情:
public void addMember(User aUser){
if(members.isEmpty()){
}
else if(friendInGroup(aUser)){
// The user has a friend in their group, add them to the group here
}
else{
}
}
然后你的friendInGroup(User aUser)
看起来像,
private boolean friendInGroup(User aUser) {
// loop through all aUsers friends
// check if any of these friends are in the group
// if they are in the group, return true
// else return false
}