【问题标题】:Create a country with specific values from a pre-determined list从预先确定的列表中创建具有特定值的国家/地区
【发布时间】:2014-11-15 13:01:11
【问题描述】:

背景



我目前正在开发一个向用户提问的 Android 应用程序。目前我正在创建用于提问的模块。现在我正在开发一个地形模块,它将能够向用户询问有关某个国家的各种问题,这些问题将显示给他们。


问题



对于这个模块,我需要一个世界上所有国家的列表。我目前有一个Country 类,它有一个String[] 数组,其中包含所有国家的英文名称(±200)。我还想要Country 类中的一些其他属性,例如它们的首都、省份和它们的翻译。所有这些属性都应该从预先确定的列表中选择。这个列表也应该相当灵活,以便将来我可以轻松地向它们添加新属性。

我目前遇到的问题是我不太确定如何创建这样的列表。我有几个想法,但它们似乎都有缺陷、笨重,或者它们根本无法在 Java 中工作。以下是我的一些想法的示例:
  • 创建一个包含所有国家/地区值的多维数组,然后可以使用预定义的索引轻松选择这些值。这是我在 PHP 编程时经常使用的东西,因为它可以容纳各种不同的类型。您还可以在 PHP 中定义数组的键(索引),但这在 Java 中不起作用。
  • 为所有国家/地区创建一个枚举,并使用与特定国家/地区关联的int 从首都/省数组中选择值。这对我来说有点太麻烦了,每次我想为这个国家添加另一个属性/问题时,我都需要创建一个巨大的数组(在我看来,Country 类是乱七八糟的)。
  • 为我希望Country 拥有的所有属性创建类。这样做的好处是我可以使用更多信息进一步扩展这些类(例如提供Capital 类属性,例如:amount_of_residents),并且可能创建一个复杂的翻译类。我只是想知道这是否是最有效/最合乎逻辑的方式?

我觉得应该有一些非常好的解决方案来解决我面临的这个问题,但是为了我的爱,我就是想不通。如果你们知道什么是最好的选择(我目前倾向于选择 3),或者给我另一个更有效的问题解决方案,我们将不胜感激。

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

【问题讨论】:

    标签: java android arrays collections


    【解决方案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 类添加或删除属性。

    【讨论】:

    • 哦,哇,这一定是我要找的。我已经决定将第三种方法与第二种方法混合使用。为每个国家创建枚举,并使用国家的整数表示从数组中选择数据。我稍后会更新/回答我自己的问题。不过谢谢,当我再次遇到类似的事情时,我会记住这一点!
    【解决方案2】:

    我不确定我是否完全理解问题的真正含义。基本上,您似乎有一个名为 Country 的域对象,它具有许多属性,并且您似乎想要动态扩展?也许一些代码将有助于解决您的问题。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-22
        相关资源
        最近更新 更多