Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在“中使用布尔值”;否则,如果;定向到ArrayList中的对象_Java_Arraylist - Fatal编程技术网

Java 如何在“中使用布尔值”;否则,如果;定向到ArrayList中的对象

Java 如何在“中使用布尔值”;否则,如果;定向到ArrayList中的对象,java,arraylist,Java,Arraylist,好的,你好。首先,如果我的英语在任何时候看起来都很差,请原谅;不是我的母语。另外,请原谅我犯了一些可怕的编码错误,但我是Java/编码的初学者 让我解释一下问题所在,希望你能帮助我: 有一个简化的社交网络,它有用户和群组。用户也可以成为朋友 有常规组和封闭组(组的子类)。不同之处在于,在封闭组中,您只能在以下情况下加入:1)您是该组中第一个加入的成员,或2)您在该组中已经有朋友(在这种情况下,显然有人在您之前已经加入了该组,因此条件#1失败) 事情是这样的。本质上,每个用户都有一个ArrayLi

好的,你好。首先,如果我的英语在任何时候看起来都很差,请原谅;不是我的母语。另外,请原谅我犯了一些可怕的编码错误,但我是Java/编码的初学者

让我解释一下问题所在,希望你能帮助我:

有一个简化的社交网络,它有用户和群组。用户也可以成为朋友

有常规组和封闭组(组的子类)。不同之处在于,在封闭组中,您只能在以下情况下加入:1)您是该组中第一个加入的成员,或2)您在该组中已经有朋友(在这种情况下,显然有人在您之前已经加入了该组,因此条件#1失败)

事情是这样的。本质上,每个用户都有一个ArrayList来存储他的朋友(名为“friendList”)。类“Group”中还有一个ArrayList,用于存储在组中注册的用户(名为“members”)

对于ClosedGroup,我有一个“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(如果两个用户是朋友)或false,这可能也是我做错的

帮助,善良的开发者

提前谢谢


编辑:不相交就像一个符咒。非常感谢你们的建议,伙计们

检查Collections类的disjoint方法:

如果没有相同的元素,则返回true

if(!Collections.disjoint(members, aUser.getFriends()))

你需要像这样的东西:

List<User> friends = aUser.getFriends();
List<User> registeredMembers = members ...
更多关于我使用的方法的信息可以找到

提示:您不想将所有这些检查放在一个方法中。相反,您应该创建小助手方法来检查这些条件。 比如:


而且:打印输出是不够的。你看,当你的操作失败时,你只会注意到如果你密切关注你的信息。这是非常可靠的。相反,您希望确保调用该方法的代码理解出了问题。例如,您可以抛出异常以指示“操作失败”。所以使用该方法的代码。。。例如,有机会向用户显示正确的错误消息

您需要做的事情与此类似:

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{
    }
}
然后您的
好友组(用户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
}

您需要向我们展示
用户
类。此外,您不应该在
中重复您的代码,否则,如果
。只需将单个if与or一起使用:
if(members.isEmpty()| | memberHasFriend){
一个helper方法如何检查组中的一个成员是否是要添加的用户的朋友?然后可以在
else if
语句中使用此方法,如
else if
语句(aUserHasFriendInMembers(aUser))-helper方法的逻辑应该是直截了当的…希望这能有所帮助!@MichaelLihs我认为OP一直在实现该方法。@shmosel-听起来像是“Java家庭作业”,很难“帮助”人们做家庭作业,而不仅仅是做家庭作业:)如果没有-很抱歉没有提供该方法的代码:)@MichaelLihs我不反对。只是指出建议帮助者名称可能没有多大帮助。Disjoint有效,谢谢你的建议和时间!@Ragnar我很高兴我能提供帮助。如果这解决了你的问题,请接受这个答案。将你的建议落实到我的cod中谢谢你的建议和时间。非常欢迎你的到来。如果你喜欢我的答案,请考虑以后接受。我可以好好利用今天的声望推到每天的上限……但是它是你的选择,你会接受哪一个答案!
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{
    }
}
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
}