Показать список стран на Java

Показать список стран на Java

world-country

В этой статье мы покажем вам, как использовать классLocale для просмотра списка стран.

P.S Tested with JDK 1.6

1. Список стран

Locale.getISOCountries() вернет список всех двухбуквенных кодов стран, определенных вISO 3166.

ListCountry.java

package com.webmitta.model;

import java.util.Locale;

public class ListCountry {

    public static void main(String[] args) {

    ListCountry obj = new ListCountry();
    obj.run();

    }

    public void run() {

    String[] locales = Locale.getISOCountries();

    for (String countryCode : locales) {

        Locale obj = new Locale("", countryCode);

        System.out.println("Country Code = " + obj.getCountry()
            + ", Country Name = " + obj.getDisplayCountry());

    }

    System.out.println("Done");
    }

}

Выход

Country Code = AD, Country Name = Andorra
Country Code = AE, Country Name = United Arab Emirates
Country Code = AF, Country Name = Afghanistan
Country Code = AG, Country Name = Antigua and Barbuda
Country Code = AI, Country Name = Anguilla
Country Code = AL, Country Name = Albania
//skip ...

2. Список стран на определенных языках

Получить список стран и отобразить название страны на китайском языке.

ListCountry.java

package com.webmitta.model;

import java.util.Locale;

public class ListCountry {

    public static void main(String[] args) {

    ListCountry obj = new ListCountry();

    //get a list of countries and display in Chinese
    obj.getListOfCountries(Locale.Chinese);

    //display in frence
    //obj.getListOfCountries(Locale.FRENCH);

    }

    public void getListOfCountries(Locale locale) {

    String[] locales = Locale.getISOCountries();

    for (String countryCode : locales) {

        Locale obj = new Locale("", countryCode);

        System.out.println("Country Code = " + obj.getCountry()
        + ", Country Name = " + obj.getDisplayCountry(locale));

     }

    }

}

Выход, Eclipse с включенным выходом UTF-8

country list

3. Список стран на своих языках

Получить список стран и отобразить название страны на языках своей страны. Хитрость заключается в создании объектаMap и сохранении кода страны и языков страны для последующего запроса.

Note
Осторожно, не во всех странах есть свои языки.

ListCountry.java

package com.webmitta.model;

import java.util.Locale;
import java.util.Map;
import java.util.TreeMap;

public class ListCountry {

    private Map languagesMap = new TreeMap();

    public ListCountry() {
    initLanguageMap();
    }

    public static void main(String[] args) {

    ListCountry obj = new ListCountry();
    obj.getListOfCountries();

    }

    public void getListOfCountries() {

    String[] countries = Locale.getISOCountries();

    int supportedLocale = 0, nonSupportedLocale = 0;

    for (String countryCode : countries) {

      Locale obj = null;
      if (languagesMap.get(countryCode) == null) {

        obj = new Locale("", countryCode);
        nonSupportedLocale++;

      } else {

        //create a Locale with own country's languages
        obj = new Locale(languagesMap.get(countryCode), countryCode);
        supportedLocale++;

      }

      System.out.println("Country Code = " + obj.getCountry()
        + ", Country Name = " + obj.getDisplayCountry(obj)
        + ", Languages = " + obj.getDisplayLanguage());

      }

      System.out.println("nonSupportedLocale : " + nonSupportedLocale);
      System.out.println("supportedLocale : " + supportedLocale);

    }

    // create Map with country code and languages
    public void initLanguageMap() {

    Locale[] locales = Locale.getAvailableLocales();

    for (Locale obj : locales) {

      if ((obj.getDisplayCountry() != null) && (!"".equals(obj.getDisplayCountry()))) {
        languagesMap.put(obj.getCountry(), obj.getLanguage());
      }

    }

    }

}

Выход, Eclipse с включенным выходом UTF-8

country list