Java中适当的容器/数据结构

时间:2016-11-19 07:42:13

标签: java data-structures

我正在为地址表单编写测试。因此我需要有效的数据。

我的第一种方法是使用此数据返回HashMap<String, String>的方法。 (即m.put("city, "New York"))。

在我的情况下,我不确定这是否是一个正确的数据结构。我只需要一个容纳数据的容器,以便可以在方法中返回数据。属性的数量和名称是固定的,因此它们在运行时不会更改。所以我并不需要动态地向地图添加和删除元素的功能。

因此我考虑实现一个名为AddressData的类或类似的类。通过创建AddressData - 对象,可以将所需数据分配给类属性。所以我可以将它们公开或通过getter方法获取它们。

你怎么看?其他数据结构建议?

到目前为止我实现了它:

 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
}

2 个答案:

答案 0 :(得分:1)

如果你有一个固定的属性列表,你应该创建一个代表你的表单的类,就像你建议的AddressData一样。

答案 1 :(得分:0)

为了使您的代码更加灵活,您的String country不应该AddressData,否则,最终会有许多if-else conditions处理许多国家/地区,而不是将国家/地区代码存储为AddressData中的密钥和HashMap值对象,如下所示:

AddressData类:

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
}

使用AddressData:

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