Most modern web applications need to show somewhere a dropdown or a list containing all countries. Getting the list of all countries is solved in all sort of ways:
- Building a database table containing all countries.
- Storing all list of countries in a file.
- Build a hard coded list or array of all countries.
One additional way, is using java to get all list of countries. The benefit of using Java to do the Job, is that Java can produce the list of countries in any desired language. This is good for internationalized web applications. Another good reason, is maintenance. On each new release the data is kept updated. Country names and and country codes are not changed and added often, but changes do happen from time to time and it is best to be updated with no effort.
The list of countries can be generated by calling the method of Locale class: getISOCountries(). This method returns string array all all the exiting country codes in ISO 3116-1 alpha-2 (2 letter) standard.
From this list it is very easy to create Locales for all countries. By calling the Locale method: getDisplayCountry(), the name of the country can be retrieved. Calling this method with a given Locale returns the name of the country in the specific language of the locale. By the way, I noted that Java did not implemented completely the getDisplayCountry() for all languages. For example, if you would like to get the list of countries in Hebrew, the only country that is returned actually in Hebrew is Israel. I believe that over time Java will include translations for all languages.
After generating list of countries for a specific language, we will sort the list. Of course that the list will be sorted according to the chosen language.
We will use a basic Country class for representing a single country, this class has only 2 members: country code and name:
public class Country {private String countryCode;private String name;public Country(String countryCode, String name){this.countryCode = countryCode;this.name = name;}public String getCountryCode() {return countryCode;}public void setCountryCode(String countryCode) {this.countryCode = countryCode;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String toString(){return countryCode + ", " + name;}}
And the CountryUtil class for generating list of countries for a specifc language.
This class has 2 methods:
- getCountries: This method returns list of Country objects of all countries in a specific desired language (Locale).
- getCountriesMap: This method returns a Map of all countries in a specific desired languages (Locale). The key of the map is the countryCode and the values is the name of the country. A map can be useful if you would like to get a country by its code. Note that in order to construct the Map the class: LinkedHashMap is used. This is done in order to preserve the sort order of the list.
This is the CountryUtil class:
On the bottom of the class you can notice a small testing program that outputs all countries in English and in Japanese. This is how the output looks like:package com.bashan.blog;import java.util.*;public class CountryUtil {public static List<Country> getCountries(final Locale inLocale) {String[] countryCodes = Locale.getISOCountries();List<Country> countries = new ArrayList<Country>(countryCodes.length);for (String countryCode : countryCodes) {countries.add(new Country(countryCode, new Locale("", countryCode).getDisplayCountry(inLocale)));}Collections.sort(countries, new Comparator<Country>() {public int compare(Country c1, Country c2) {return c1.getName().compareTo(c2.getName());}});return countries;}public static Map<String, String> getCountriesMap(final Locale inLocale) {List<Country> countries = getCountries(inLocale);Map<String, String> countriesMap = new LinkedHashMap<String, String>(countries.size());for (Country country : countries) {countriesMap.put(country.getCountryCode(), country.getName());}return countriesMap;}public static void printCounties(List<Country> countries) {for (Country country : countries) {System.out.println(country);}}public static void main(String[] args) {// Get list of countries in US EnglishSystem.out.println("---- List of countries in English ----");List<Country> countries = getCountries(Locale.US);printCounties(countries);System.out.println("---- List of countries in Japanese ----");// Get list of countries in Japanesecountries = getCountries(Locale.JAPANESE);printCounties(countries);}}
---- List of countries in English ----AF, AfghanistanAL, AlbaniaDZ, AlgeriaAS, American SamoaAD, AndorraAO, AngolaAI, AnguillaAQ, AntarcticaAG, Antigua and BarbudaAR, ArgentinaAM, ArmeniaAW, ArubaAU, AustraliaAT, AustriaAZ, AzerbaijanBS, BahamasBH, BahrainBD, BangladeshBB, BarbadosBY, BelarusBE, BelgiumBZ, BelizeBJ, BeninBM, BermudaBT, BhutanBO, BoliviaBA, Bosnia and HerzegovinaBW, BotswanaBV, Bouvet IslandBR, BrazilIO, British Indian Ocean TerritoryVG, British Virgin IslandsBN, BruneiBG, BulgariaBF, Burkina FasoBI, BurundiKH, CambodiaCM, CameroonCA, CanadaCV, Cape VerdeKY, Cayman IslandsCF, Central African RepublicTD, ChadCL, ChileCN, ChinaCX, Christmas IslandCC, Cocos IslandsCO, ColombiaKM, ComorosCG, CongoCK, Cook IslandsCR, Costa RicaHR, CroatiaCU, CubaCY, CyprusCZ, Czech RepublicCI, Côte d'IvoireDK, DenmarkDJ, DjiboutiDM, DominicaDO, Dominican RepublicEC, EcuadorEG, EgyptSV, El SalvadorGQ, Equatorial GuineaER, EritreaEE, EstoniaET, EthiopiaFK, Falkland IslandsFO, Faroe IslandsFJ, FijiFI, FinlandFR, FranceGF, French GuianaPF, French PolynesiaTF, French Southern TerritoriesGA, GabonGM, GambiaGE, GeorgiaDE, GermanyGH, GhanaGI, GibraltarGR, GreeceGL, GreenlandGD, GrenadaGP, GuadeloupeGU, GuamGT, GuatemalaGN, GuineaGW, Guinea-BissauGY, GuyanaHT, HaitiHM, Heard Island And McDonald IslandsHN, HondurasHK, Hong KongHU, HungaryIS, IcelandIN, IndiaID, IndonesiaIR, IranIQ, IraqIE, IrelandIL, IsraelIT, ItalyJM, JamaicaJP, JapanJO, JordanKZ, KazakhstanKE, KenyaKI, KiribatiKW, KuwaitKG, KyrgyzstanLA, LaosLV, LatviaLB, LebanonLS, LesothoLR, LiberiaLY, LibyaLI, LiechtensteinLT, LithuaniaLU, LuxembourgMO, MacaoMK, MacedoniaMG, MadagascarMW, MalawiMY, MalaysiaMV, MaldivesML, MaliMT, MaltaMH, Marshall IslandsMQ, MartiniqueMR, MauritaniaMU, MauritiusYT, MayotteMX, MexicoFM, MicronesiaMD, MoldovaMC, MonacoMN, MongoliaME, MontenegroMS, MontserratMA, MoroccoMZ, MozambiqueMM, MyanmarNA, NamibiaNR, NauruNP, NepalNL, NetherlandsAN, Netherlands AntillesNC, New CaledoniaNZ, New ZealandNI, NicaraguaNE, NigerNG, NigeriaNU, NiueNF, Norfolk IslandKP, North KoreaMP, Northern Mariana IslandsNO, NorwayOM, OmanPK, PakistanPW, PalauPS, PalestinePA, PanamaPG, Papua New GuineaPY, ParaguayPE, PeruPH, PhilippinesPN, PitcairnPL, PolandPT, PortugalPR, Puerto RicoQA, QatarRE, ReunionRO, RomaniaRU, RussiaRW, RwandaSH, Saint HelenaKN, Saint Kitts And NevisLC, Saint LuciaPM, Saint Pierre And MiquelonVC, Saint Vincent And The GrenadinesWS, SamoaSM, San MarinoST, Sao Tome And PrincipeSA, Saudi ArabiaSN, SenegalRS, SerbiaCS, Serbia and MontenegroSC, SeychellesSL, Sierra LeoneSG, SingaporeSK, SlovakiaSI, SloveniaSB, Solomon IslandsSO, SomaliaZA, South AfricaGS, South Georgia And The South Sandwich IslandsKR, South KoreaES, SpainLK, Sri LankaSD, SudanSR, SurinameSJ, Svalbard And Jan MayenSZ, SwazilandSE, SwedenCH, SwitzerlandSY, SyriaTW, TaiwanTJ, TajikistanTZ, TanzaniaTH, ThailandCD, The Democratic Republic Of CongoTL, Timor-LesteTG, TogoTK, TokelauTO, TongaTT, Trinidad and TobagoTN, TunisiaTR, TurkeyTM, TurkmenistanTC, Turks And Caicos IslandsTV, TuvaluVI, U.S. Virgin IslandsUG, UgandaUA, UkraineAE, United Arab EmiratesGB, United KingdomUS, United StatesUM, United States Minor Outlying IslandsUY, UruguayUZ, UzbekistanVU, VanuatuVA, VaticanVE, VenezuelaVN, VietnamWF, Wallis And FutunaEH, Western SaharaYE, YemenZM, ZambiaZW, ZimbabweAX, Åland Islands
---- List of countries in Japanese ----
IS, アイスランドIE, アイルランドAZ, アゼルバイジャンAF, アフガニスタンAS, アメリカンサモアUS, アメリカ合衆国AE, アラブ首長国連邦DZ, アルジェリアAR, アルゼンチンAL, アルバニアAW, アルバ島AM, アルメニアAI, アンギラAO, アンゴラAG, アンチグアバーブーダAD, アンドラYE, イエメンGB, イギリスIL, イスラエルIT, イタリアIQ, イラクIR, イランIN, インドID, インドネシアUG, ウガンダUA, ウクライナUZ, ウズベキスタンUY, ウルグアイEC, エクアドルEG, エジプトEE, エストニアET, エチオピアER, エリトリアSV, エルサルバドルOM, オマーンNL, オランダAN, オランダ領アンティル諸島AU, オーストラリアAT, オーストリアAX, オーランド諸島KZ, カザフスタンQA, カタールCA, カナダCM, カメルーンKH, カンボジアCV, カーボベルデGY, ガイアナGA, ガボンGM, ガンビアGH, ガーナCY, キプロスCU, キューバKI, キリバスKG, キルギスタンGN, ギニアGW, ギニアビサウGR, ギリシアKW, クウェートCK, クック諸島CX, クリスマス島HR, クロアチアGT, グアテマラGP, グアドループGU, グアムGL, グリーンランドGE, グルジアGD, グレナダKY, ケイマン諸島KE, ケニアCC, ココス諸島CR, コスタリカKM, コモロCO, コロンビアCG, コンゴCD, コンゴ民主共和国CI, コートジボアールSA, サウジアラビアGS, サウスジョージア島・サウスサンドウィッチ島ST, サントメ・プリンシペPM, サンピエール島・ミクロン島SM, サンマリノZM, ザンビアSL, シエラレオネSY, シリアSG, シンガポールDJ, ジブチGI, ジブラルタルJM, ジャマイカZW, ジンバブエCH, スイスSE, スウェーデンSJ, スバールバル諸島・ヤンマイエン島ES, スペインSR, スリナムLK, スリランカSK, スロバキアSI, スロベニアSZ, スワジランドSD, スーダンSC, セイシェルSN, セネガルRS, セルビアCS, セルビア・モンテネグロKN, セントクリストファー・ネイビスVC, セントビンセントおよびグレナディーン諸島SH, セントヘレナ島LC, セントルシアSO, ソマリアSB, ソロモン諸島TH, タイTJ, タジキスタンTZ, タンザニアTC, タークス諸島・カイコス諸島CZ, チェコTD, チャドTN, チュニジアCL, チリTV, ツバルDK, デンマークTK, トケラウ諸島TT, トリニダード・トバゴTM, トルクメニスタンTR, トルコTO, トンガTG, トーゴDE, ドイツDO, ドミニカ共和国DM, ドミニカ国NG, ナイジェリアNR, ナウルNA, ナミビアNU, ニウエ島NI, ニカラグアNE, ニジェールNC, ニューカレドニアNZ, ニュージーランドNP, ネパールNO, ノルウェーNF, ノーフォーク島HT, ハイチHU, ハンガリーHM, ハード・マクドナルド諸島VA, バチカンVU, バヌアツBS, バハマBB, バルバドスBD, バングラデシュBM, バーミューダ諸島BH, バーレーンPK, パキスタンPA, パナマPG, パプアニューギニアPW, パラオPY, パラグアイPS, パレスチナPN, ピトケアン島FJ, フィジーPH, フィリピンFI, フィンランドFO, フェロー諸島FK, フォークランド諸島FR, フランスTF, フランス領極南諸島BR, ブラジルBG, ブルガリアBF, ブルキナファソBN, ブルネイBI, ブルンジBT, ブータンBV, ブーベ島PR, プエルトリコVN, ベトナムBJ, ベニンVE, ベネズエラBY, ベラルーシBZ, ベリーズBE, ベルギーPE, ペルーHN, ホンジュラスBA, ボスニア・ヘルツェゴビナBW, ボツワナBO, ボリビアPT, ポルトガルPL, ポーランドMO, マカオMK, マケドニアMG, マダガスカルYT, マヨット島MW, マラウイML, マリMT, マルタMQ, マルティニーク島MY, マレーシアMH, マーシャル諸島FM, ミクロネシアMM, ミャンマーMX, メキシコMZ, モザンビークMC, モナコMV, モルディブMD, モルドバMA, モロッコMN, モンゴルME, モンテネグロMS, モントセラト島MU, モーリシャスMR, モーリタニアJO, ヨルダンLA, ラオスLV, ラトビアLT, リトアニアLI, リヒテンシュタインLY, リビアLR, リベリアLU, ルクセンブルクRW, ルワンダRO, ルーマニアLS, レソトLB, レバノンRE, レユニオンRU, ロシアWF, ワリス・フテュナ諸島CF, 中央アフリカ共和国CN, 中華人民共和国GF, 仏領ギアナPF, 仏領ポリネシアMP, 北マリアナ諸島ZA, 南アフリカAQ, 南極TW, 台湾KR, 大韓民国JP, 日本KP, 朝鮮民主主義人民共和国TL, 東ティモールVI, 米領バージン諸島UM, 米領太平洋諸島IO, 英領インド洋地域VG, 英領バージン諸島EH, 西サハラWS, 西サモアGQ, 赤道ギニアHK, 香港