好友列表程序Java

时间:2016-08-11 04:15:52

标签: java

我正在尝试用Java创建一个friendlist程序。 但是,我必须同时将用户(对象)添加到两个数组列表中。

有没有办法这样做? 我当前的代码是这样的,但似乎不正确。

/* Add this particular person (person in the parameter list) to your friendList
     * Add yourself to this particular person's friendList as well
     *
     * If either you or person-to-be-added's friendList is full (already have 5 friends), 
     *          - print "Friends limit reached."
     *          - Both parties will not add each other.
     * NOTE: Your total number of friends cannot exceed 5 (friendsLimit)
     */ 


public void befriend(Person p){
    //Implement your code here..

            for(Person i : friendList) {
                if(!i.equals(p) && friendList.size() < 5) {
                    friendList.add(p);
                }
                else
                   if(!i.equals(p) && friendList.size() >= 5) {
                       System.out.println("Friends limit reached.");
                   }
                   else {
                       System.out.println("Friend already exist in list");
                   }
            }

}

1 个答案:

答案 0 :(得分:0)

我只是好奇,你是否故意检查要添加的人是否已经存在于好友列表中,因为在方法评论中没有提及。 假设您以某种方式访问​​其他人的朋友列表,并且befriend方法是Person的方法:

  1. 您不必遍历朋友列表中的所有人员,以确保您或其他人的朋友列表无法满负荷运转。只需检查边界,如果没有足够的空间打印消息,并在if子句中调用return;
  2. 如果方法befriend()属于Person.befriend(),那么您只需添加friendList.add(p)p.getFriendList().add(this)
  3. 如果您需要确保不添加两次,那么您可以在for循环中检查。但是因为你的Person类有一个equals()方法,也许是一个hashCode(),你可以使用Java Collection方法friendList.contains(p)(例如,如果friendList的类型是ArrayList)。当且仅当此列表包含至少一个元素e时,collection.contains()方法&#34; [...]返回true(o == null?e == null:o.equals(e)) 。&#34;,见List.html#contains(java.lang.Object)
  4. 我希望这会有所帮助。