2016-11-19 27 views
0

私はアドレスフォームのテストを書いています。したがって、私は有効なデータが必要です。Javaの適切なコンテナ/データ構造体

私の最初のアプローチは、このデータでHashMap<String, String>を返すメソッドです。 (すなわち、m.put("city, "New York"))。

私の場合、これが適切なデータ構造であるかどうかはわかりません。メソッド内でデータを返すことができるように、データを保持するコンテナだけが必要です。属性の数と名前は固定されているため、実行中は変更されません。だから私は本当にマップに要素を動的に追加したり削除したりする機能は必要ありません。

そのため、AddressDataなどのクラスを実装することを検討します。 AddressData -Objectsを作成することによって、必要なデータをクラス属性に割り当てることができます。だから私はそれらをパブリックにするか、ゲッタメソッドで取得することができます。

あなたはどう思いますか?他のデータ構造の提案?

彼らは方法私はこれまでのところ、それを実装し

:クラスと

public HashMap getValidData(String country){ 
    HashMap<String, String> data = new HashMap<String, String>(); 

    if(country.equals("USA")){ 
     data.put("firstname","John"); 
     data.put("lastname","Green"); 
     data.put("city","New York"); 
    } 
    else if(country.equals("Germany")){ 
     //add valid german address data 
    } 

    return data; 
} 

実装案:

class AddressData{ 
    private String firstname; 
    private String lastname; 
    private String city; 

    public AddressData(String country){ 
     if(country.equals("USA")){ 
      firstname="John"; 
      lastname="Green"; 
      city="New York"; 
     } 
     else if(country.equals("Germany")){ 
      //add valid german address data 
     } 
    } 

    public String getFirstname(){ return firstname; } 
    // other getters 
} 
+0

ハッシュマップでは、すべてのキーが一意である必要があります。 – SkrewEverything

+0

これは正しいです。私の場合は問題ありません。キーはAddressDataカテゴリ、すなわちファーストネーム、ラストネーム、都市などです。私は1つのデータセットに2つの都市を必要としません。 – MrBrightside

+0

今までコードで何をしていたのかを親切に伝えてください。それを修正して説明することができます。あなたが理解できないものをデザインする方法はたくさんあります。 – SkrewEverything

答えて

1

を使用すると、属性の固定されたリストを持っている場合は、あなたがあなたのフォームを表すクラスを作成する必要がありますあなたが提案するAddressDataのように。そうでない場合、あなたはむしろとしてHashMapに値オブジェクトとしてキーとAddressDataとして国番号を格納し、多くの国を処理するために多くのif-else conditionsで終わるだろう、あなたはAddressDataString countryを持つべきではない、あなたのコードをより柔軟にするために

0

以下に示す:

アドレスデータクラス:アドレスデータの

public class AddressData { 

    private String firstname; 
    private String lastname; 
    private String city; 

    public AddressData(String firstname, String lastname, String city){ 
      this.firstname=firstname; 
      this.lastname=lastname; 
      this.city=city; 
    } 

    public String getFirstname(){ return firstname; } 
    // other getters 
} 

用途:

HashMap<String, AddressData> data = new HashMap<String, AddressData>(); 
AddressData addressData1 = new AddressData("John", "Green", "New York"); 
data.put("USA", addressData1); 
//You can add other address data 
関連する問題