1

我正在尝试查找所有国家/地区的名称。我试图从中获取它们,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;
}

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

4

2 回答 2

2

只需使用 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;
}
于 2015-09-03T06:46:38.727 回答
2

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

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

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

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

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

于 2015-09-03T00:58:01.887 回答