Arraylist中的问题

时间:2013-05-08 06:03:43

标签: java arrays

我解决了这个问题:
1 - 定义(覆盖)toString方法以打印人名,年龄和他/她的朋友姓名列表 2 - 定义一个返回一个人朋友数的方法。
3 - 定义一个getter方法,将一个人的朋友作为一个数组返回 4 - 定义一个非静态方法,返回一个人最老的朋友。
5 - 定义非静态方法以返回朋友的平均年龄 6-定义一个方法compareTo,它将一个人Object p作为参数,将p的年龄与该对象的年龄进行比较。 (即,根据比较返回值> 0,= 0或<0)

这是我不理解的第二部分问题
1 - 定义非静态方法addFriend以将朋友添加到某个人。请注意:
一个人只能在朋友列表中添加一次。提示:使用equals方法检查我们要添加的人是否已添加到列表中 一个人不能成为他自己的朋友。提示:使用等于方法检查我们要添加的人是否与人员相同 2 - 定义非静态方法isFriend以查看给定的人是否是此对象的朋友 3 - 定义一个静态方法commonFriends,它将2个人对象作为参数,并在ArrayList中返回这两个人的共同朋友。

    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package person1;


import java.util.ArrayList;
public class Person1 {

    private String Name;
    private int Age;
    private ArrayList<Person1>Friends=new ArrayList();

   public String getName(){
    return Name;
}
     public String toString(){
         String st="";
         String x="";
     st= Name+","+Age;

     for(int i=0;i<Friends.size();i++)


     x+=Friends.get(0).getName();
     return st+","+x;
    }
     public int getFriends(){
         return Friends.size();

}
     public Person1 OldestFriends(){
         int maxIndex=0;
         for(int i=0;i<Friends.size();i++){
             if(Friends.get(maxIndex).getAge())
                    maxIndex++;
         }
       return  Friends.get(maxIndex);
     }

    public int compareTo(Person1 p) {

         return (this.Age)-(p.Age); 


    }
    public boolean equals(Person1 p) {
        Person1 P= new Person1();
        if(this.Name==P.Name&&Age == P.Age ){
       // return ( Name.equals(P.name) && Age == P.Age );
                 //both objects have same Name
                 return true;
             } else {
                 //both objects have different Name
                 return false;
             }

    }
    public void addFriend(){
       Friends = new ArrayList<Person1>();

    }


    }

1 个答案:

答案 0 :(得分:1)

假设您已正确覆盖equals()hashCode()。首先,尝试这样的事情:

public void addFriend(Person1 person){

   if(!this.equals(person) && !Friends.contains(person)) {
       Friends.add(person);
   }

}

public boolean isFriend(Person1 person){
    return Friends.contains(person);
}

public static List<Person1> commonFriends(Person1 person1,Person1 person2){
     List<Person1> commonFriends = new ArrayList<Person1>(person2.getFriends());
     return commonFriends.retainAll(person1.getFriends());
}

请关注Java naming conventions.