Показать список стран на Java
В этой статье мы покажем вам, как использовать класс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
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 MaplanguagesMap = 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