【问题标题】:how to get countries list alphabetically arranged with the correct names如何使用正确名称按字母顺序排列国家/地区列表
【发布时间】:2015-09-02 22:54:48
【问题描述】:

我正在尝试查找所有国家/地区的名称。 我试图从java.util.Locale 获取它们,但我发现有些国家名称错误,而且列表没有按字母顺序排列。

为了从java.util.Locale 获取列表,我使用了这段代码

private List<String> countriesList = new ArrayList<String>();

public List<String> getCountriesList() {

        String[] locales = Locale.getISOCountries();

        for (String countryCode : locales) {

            Locale obj = new Locale("", countryCode);
            countriesList.add(obj.getDisplayCountry(Locale.FRENCH));

        }
    return countriesList;
}

那么有没有办法让它们按字母顺序排列正确的名称?

【问题讨论】:

    标签: java countries


    【解决方案1】:

    只需使用 Collections.sort(listName),您的列表就会被排序

    List<String> countriesList = new ArrayList<String>();
    
    
    
            String[] locales = Locale.getISOCountries();
    
            for (String countryCode : locales) {
    
                Locale obj = new Locale("", countryCode);
                countriesList.add(obj.getDisplayCountry(Locale.FRENCH));
                Collections.sort(countriesList);
                }
            for(String s:countriesList)
            {
                System.out.println(s);
            }
    

    在您的代码中,只需在方法的返回语句之前添加排序方法

     private List<String> countriesList = new ArrayList<String>();
    
     public List<String> getCountriesList() {
    
        String[] locales = Locale.getISOCountries();
    
        for (String countryCode : locales) {
    
            Locale obj = new Locale("", countryCode);
            countriesList.add(obj.getDisplayCountry(Locale.FRENCH));
    
        }
    Collections.sort(countriesList);
    return countriesList;
    }
    

    【讨论】:

    • 谢谢!您的解决方案运行良好,对于错误的名称,我将 Locale.FRENCH 更改为 Locale.ENGLISH
    • @Spartan 谢谢你,我的荣幸。
    【解决方案2】:

    我认为有两个不同的问题:

    1. 列表未按字母顺序排列。

    您只需要对数组进行排序。有很多方法可以做到这一点,其中一种可能如下:

    Collections.sort(countriesList, new Comparator<String>() {
        @Override
        public int compare(String str1, String Str2)
        {
            return  str1.compareTo(str2);
        }
    });
    
    1. 一些国家名称错误

    如果有国家名称错误,尤其是在您的语言中,则很难在 Java 中对其进行任何处理。如果您不能依赖内部 Java 国家/地区名称,您可以“手动”将名称列表直接放入您的应用程序中,这可能很烦人或例如使用网络服务。有很多,检查例如这个one。这种方法的优点是,如果出现一些新的国家/地区,可能会更新列表,不时发生什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多