-2

私はこの質問を解決しました:
1-人の名前、年齢、および友人の名前のリストを出力する toString メソッドを定義 (オーバーライド) します。
2-人の友達の数を返すメソッドを定義します。
3-人の友達を配列として返す getter メソッドを定義します。
4-人の最も古い友人を返す非静的メソッドを定義します。
5-友達の平均年齢を返す非静的メソッドを定義します。
6- p の年齢をこのオブジェクトの年齢と比較するために、人物オブジェクト p をパラメーターとして受け取るメソッド compareTo を定義します。(つまり、比較に基づいて >0、=0、または <0 の値を返します)

これは私が理解できなかった質問の 2 番目の部分です
。 1-非静的メソッド addFriend を定義して、人に友人を追加します。注意:
友達リストに追加できるのは 1 回だけです。ヒント: equals メソッドを使用して、追加したい人が既にリストに追加されているかどうかを確認します
。人は自分自身の友達になることはできません。ヒント: equals メソッドを使用して、追加したい人物がその人物と同じかどうかを確認し

ます。 2-非静的メソッド isFriend を定義して、特定の人物がこのオブジェクトの友人であるかどうかを確認します。
3-パラメータとして 2 人の人物オブジェクトを取り、これら 2 人の共通の友人を ArrayList で返す静的メソッド commonFriends を定義します。

    /*
 * 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>();

    }


    }
4

1 に答える 1

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 の命名規則に従ってください。

于 2013-05-08T06:08:04.913 に答える