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

私は2つの別々の問題があると思います:

  1. リストはアルファベット順ではありません。

配列をソートするだけです。それを行う方法は多数ありますが、そのうちの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 に答える
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);
        }

コードでは、メソッドの return ステートメントの前に sort メソッドを追加するだけです

 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 に答える