我解决了这个问题:
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>();
}
}
答案 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());
}