如何在“else if”中使用boolean指向ArrayList

时间:2016-11-14 20:33:35

标签: java arraylist

好的,你好。首先,如果我的英语在任何时候看起来很差,请原谅;不是我的母语。此外,请原谅我任何可怕的编码错误,但我是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,我也可能做错了。

帮助,亲切的开发者。

提前致谢。

编辑:脱节就像一个魅力。非常感谢你的建议!

3 个答案:

答案 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
}