2016-04-07 6 views
0

私はJavaに新しく、この問題を解決するために私の頭を叩いてしまいました。とにかくPersonを作成するクラスは、ArrayListというPersonタイプを使用してPhonebookを作成するクラスです。私はリストからPersonを取り除くためにremove関数を書いていますが、私の問題はIndexof関数を使うことができない人の名前しか取得できないためです。ポジションは名前になります。オブジェクトの変数を知らないうちにarraylistからオブジェクトを検索して削除する

ArrayListを使用してオブジェクトを保存したことが初めてです。 結果がどのように表示されるかわかりません。私は名前の位置が(私のリストの中で)10であれば11が電話になり、12がアドレスになると推測しています。私は正しいですか?

public class Person 
    { 
     private String name; 
     private String phone; 
     private String address; 

public Person (String n, String p, String a) 
{ 
    this.name = n; 
    this.phone = p; 
    this.address = a; 
} 

public void setPhone(String newPhone) 
{ 
    this.phone = newPhone; 
} 

public String getName() 
{ 
    return this.name; 
} 

public String getPhone() 
{ 
     return this.phone; 
} 

public String getAddress() 
{ 
     return this.address; 
} 



public String print() 
{ 
     return "Name is : " + this.name + "\nPhone is : " + this.phone + "\nAddress is : " + this.address; 
} 

}

import java.util.*; 

public class phoneBook 
{ 
      Scanner in = new Scanner (System.in); 
      private ArrayList <Person> persons = new ArrayList <Person>(); 
      private int i; 
      private boolean flag; 


     public void addPerson(Person p) 
     { 
      persons.add(p); 
     } 

     public void listPersons() 
     { 
      System.out.println(persons); 
     } 

     public void lookUp (String theName) 
     { 
      flag = persons.contains(theName); 
      if (flag == true) 
      { 
       System.out.println("That name exists!"); 
      } 
      else 
      { 
       System.out.println("That name does not exist!"); 
      } 
     } 

     public void remove (String theName) 
     { 

     } 

編集:私は別の関数でスキャナを使用することを計画しています。ご心配なく。

答えて

0

私は

、のか分からないあなたはその配列のオブジェクトを取得したいんが、各オブジェクトは(フル属性を持つ)その配列にインデックス付けされている場合、今、あなたは、次のコードを使用して削除することができます
public String removePerson(ArrayList<Person> arrayList,String name) 
{ 
for(Person currentPerson:arrayList) 
{ 
    if(currentPerson.getName().equals(name)) 
    { 
     arrayList.remove(currentPerson); 
     return "Removed successfully" 
    } 
} 
return "No record found for that person"; 
} 

だけであなたはPersonクラスでequals()hashCode()メソッドをオーバーライドする必要があり、この方法

+0

だから、彼の電話と彼のアドレスを意味し、オブジェクトのすべての要素を削除しますaswellを削除されます。 – Discordgr

+0

あなたがarrayListとpersonの名前を渡した場合、すべての属性を持つObjectが削除されます。もしphoneNumberで削除したいのであれば、この番号をnameの代わりに渡してcurrentPeroson.getName()をcurrentPerson.getPhoneNumberに変更してください。 () –

+0

ええ、ありがとうございました。 – Discordgr

0

にArrayListをし、その人の名前を渡します。このようにして、このタイプの2つのオブジェクトが等しいとみなされるときを定義します。次にlist.contains(yourObject)を使用して、そのオブジェクトがリスト内の任意のオブジェクトと等しいかどうかを判断できます。これはequals()の実装に基づいています。

0

これは役に立ちますか?

public void remove (String theName,ArrayList<Person> persons) { 

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

      if(persons[i].getName().equals(theName)) { 

       persons.remove(i); 
      } 
     } 
    } 

敬具、ナザール

+0

はい、助かります!ありがとう! – Discordgr

関連する問題