使用预定列表创建具有特定值的国家/地区

时间:2014-09-21 12:35:42

标签: java android arrays collections

背景



我目前正在开发一个Android应用程序,它向用户询问一个问题。目前我正在创建用于提问的模块。现在我正在研究一个地形模块,它可以向用户询问有关某个国家的各种问题。

问题



对于本单元,我需要一份世界上所有国家的清单。我目前有一个Country类,其中包含String[]数组,其中包含所有国家/地区的英文名称(±200)。我还需要Country课程中的其他一些属性,例如他们的首都,省份以及他们的翻译。应从预定列表中选择所有这些属性。此列表也应该相当灵活,以便将来我可以轻松地向它们添加新属性
我目前遇到的问题是我不太确定如何创建这样的列表。我有几个想法,但所有这些想法都显得有缺陷,繁琐,或者他们只是简单地在Java中不起作用。以下是我的一些想法的示例:

  • 创建一个多维数组,该数组包含所有国家/地区的值,然后可以使用预定义的索引轻松选择这些值。这是我在PHP编程时经常使用的东西,因为它可以容纳各种不同的类型。您还可以在PHP中定义数组的键(索引),但这在Java中不起作用。
  • 为所有国家/地区创建枚举,并使用与特定国家/地区相关联的int来选择大写/省数组中的值。这对我来说有点过于繁琐,每次我想为国家添加另一个属性/问题时都需要我创建一个巨大的数组(在我看来,混淆了Country类)。 / LI>
  • 为我想要Country的所有属性创建类。这样做的好处是我可以通过更多信息进一步扩展这些类(例如提供Capital类属性,例如:amount_of_residents),并且具有创建复杂翻译类的优势。我只是想知道这是否是最有效/最符合逻辑的方法?

我觉得对于我面临的这个问题应该有一些非常好的解决方案,但是对于我的爱,我无法理解它。如果你们有任何想法是什么是最好的选择(我现在倾向于选项3),或者给我另一个解决方案来解决更有效的问题,我们将不胜感激。

注意:我没有添加任何代码,因为我觉得没有必要。如果有人想看一些代码,我很乐意提供它。

3 个答案:

答案 0 :(得分:1)

我相信你应该采用最后一种方法,它应该类似于下面的示例代码P.S

    class Country {
    String countryName;
    String capital;
    int noOfResidents;
    List<String> provinces;

    //getter & setters for them

    public void setCountryName(String countryName)
    {
    this.countryName=countryName;
    }

    //And so on & forth
    }

    class SetCountryDetails {

    public static void main(String[] args){

    Map<String, Country> countryData = new HashMap<String, Country>();
    //Using a map facilitates easier fetch for the countries. You can just
    //provide the key of the country, for an instance to fetch the data for Germany 
    //just write countryData.get("Germany");

    Country countryOne = new Country();
    countryOne.setCountryName("Germany");
    countryData.put("Germany", countryOne);

    Country countryTwo = new Country();
    countryOne.setCountryName("India");
    countryData.put("India", countryTwo);

     }
    }

此方法使您可以随时向Country类添加或删除属性,而不会有太多麻烦。

答案 1 :(得分:0)

我不确定我完全明白这个问题究竟是什么。基本上你似乎有一个名为Country的域对象,它有许多属性,你似乎想要动态扩展?也许一些代码可以帮助解决您的问题。

答案 2 :(得分:0)

根据我对您问题的理解,您需要使用国家/地区列表以及这些国家/地区的相应属性。并且这些属性在将来需要灵活添加/删除。为此,您可以在属性文件或XML文件中维护国家/地区和相关属性的列表,如果需要,可以在将来灵活添加/删除属性。如果我的理解是错的,那么请告诉我。 :)