Is there an open source java enum of ISO 3166-1 country codes

前端 未结 11 2581
南笙
南笙 2020-12-04 10:57

Does anyone know of a freely available java 1.5 package that provides a list of ISO 3166-1 country codes as a enum or EnumMap? Specifically I need the \"ISO 3166-1-alpha-2

相关标签:
11条回答
  • 2020-12-04 11:14

    If you are already going to rely on Java locale, then I suggest using a simple HashMap instead of creating new classes for countries etc.

    Here's how I would use it if I were to rely on the Java Localization only:

    private HashMap<String, String> countries = new HashMap<String, String>();
    String[] countryCodes = Locale.getISOCountries();
    
    for (String cc : countryCodes) {
        // country name , country code map
        countries.put(new Locale("", cc).getDisplayCountry(), cc.toUpperCase());
    }
    

    After you fill the map, you can get the ISO code from the country name whenever you need it. Or you can make it a ISO code to Country name map as well, just modify the 'put' method accordingly.

    0 讨论(0)
  • 2020-12-04 11:17

    Now an implementation of country code (ISO 3166-1 alpha-2/alpha-3/numeric) list as Java enum is available at GitHub under Apache License version 2.0.

    Example:

    CountryCode cc = CountryCode.getByCode("JP");
    
    System.out.println("Country name = " + cc.getName());                // "Japan"
    System.out.println("ISO 3166-1 alpha-2 code = " + cc.getAlpha2());   // "JP"
    System.out.println("ISO 3166-1 alpha-3 code = " + cc.getAlpha3());   // "JPN"
    System.out.println("ISO 3166-1 numeric code = " + cc.getNumeric());  // 392
    

    Last Edit 2016-Jun-09

    CountryCode enum was packaged into com.neovisionaries.i18n with other Java enums, LanguageCode (ISO 639-1), LanguageAlpha3Code (ISO 639-2), LocaleCode, ScriptCode (ISO 15924) and CurrencyCode (ISO 4217) and registered into the Maven Central Repository.

    Maven

    <dependency>
      <groupId>com.neovisionaries</groupId>
      <artifactId>nv-i18n</artifactId>
      <version>1.22</version>
    </dependency>
    

    Gradle

    dependencies {
      compile 'com.neovisionaries:nv-i18n:1.22'
    }
    

    GitHub

    https://github.com/TakahikoKawasaki/nv-i18n

    Javadoc

    http://takahikokawasaki.github.com/nv-i18n/

    OSGi

    Bundle-SymbolicName: com.neovisionaries.i18n
    Export-Package: com.neovisionaries.i18n;version="1.22.0"
    
    0 讨论(0)
  • 2020-12-04 11:19

    This code gets 242 countries in Sun Java 6:

    String[] countryCodes = Locale.getISOCountries();
    

    Though the ISO website claims there are 249 ISO 3166-1-alpha-2 code elements, though the javadoc links to the same information.

    0 讨论(0)
  • 2020-12-04 11:19

    Not a java enum, but a JSON version of this is available at http://country.io/names.json

    0 讨论(0)
  • 2020-12-04 11:22

    AWS Java SDK has CountryCode.

    0 讨论(0)
提交回复
热议问题