2017-09-27 8 views
0

私のコードで配列リスト(私の場合はCustomerList、Customerオブジェクトを含む)を検索するメソッドを作成しようとしています。何かが見つからない場合は、新しいものを追加しますArrayListのは...ここArrayListにStringオブジェクトを追加する

は、私はそれがすべて....

public class CustomerDatabase { 

    private ArrayList <Customer> customerList = null; 

    public CustomerDatabase() { 
     customerList = new ArrayList<Customer>(); 
    } 

を設定していると、これは私が作るしようとしている方法である方法です。私はその意識だ

public void addCustomer(String n) 
{ 
    for(Customer c:customerList) 
     if (!customerList.contains(n)) 
     customerList.add(n);   
} 

...それはArrayListの中に見つからない場合、それはArrayListの末に与えられた名前の「n」をお客様に追加されますようにそれを取得しようとしています.addとStringの全体で何かが間違っていますが、どこが間違っているのか分かりません。すべての入力は素晴らしいでしょう!

+0

プロパティが一致するオブジェクトまたはカスタム検索を実行するために使用できる 'Comparator'メソッドを含む' contains'メソッドを実装します – MadProgrammer

+0

独自の質問を破棄しないでください。別の質問をする場合は、別に質問してください。 – shmosel

答えて

3

Customerクラスをnameプロパティと混同しています。 CustomのリストにはStringが含まれているかどうかはチェックできません。しかし、リスト内の顧客があなたが探しているプロパティを持っているかどうかを確認することができます。あなたがいずれかを見つけていない場合は、その文字列を持つ新しいオブジェクトを作成する必要があります。

public void addCustomer(String name) { 
    for (Customer c : customerList) { 
     if (c.getName().equals(name)) { 
      // duplicate found 
      return; 
     } 
    } 
    // no duplicates; add new customer 
    customerList.add(new Customer(name)); 
} 

これはCustomerは、コンストラクタCustomer(String name)と方法String getName()を持っている前提としています。必要に応じて適応する。

+0

また、マップがより良い解決策かもしれません。 –

+0

@ScaryWombatはい、多くの選択肢があります。 OPの意図したアプローチで作業しようとしました。 – shmosel

+0

@ D.Hoffmanよろしくお願いします。将来的には、エラーメッセージやクラス構造などの関連情報をすべてあなたの質問に含めるようにして、推測する必要はありません。 – shmosel

0

カスタマーはクラスで、顧客クラスタイプの配列リストを作成しました。name(String)とCustomerクラスオブジェクトを直接比較する方法はありません。

あなたは

public void addCustomer(String name) { 
for (Customer c : customerList) { 
    if (!c.getName().equals(name)) { 
     Customer c=new Customer(); 
     c.setName(name); 
     customerList.add(c); 
    } 
} 

}

like-と顧客クラスにコードを変更する必要がありますが、おそらくすべてのためのリストをスキャンするために、独自のフィルタを記述する必要があります

Class Customer{ 
private String name; 
//getter and setter method for name. 
} 
関連する問題