在Java中,是否有一种简单的方法可以从给定的国家名称获取ISO2代码,例如当给定"瑞士"时获取"CH"?
目前我能想到的唯一解决方案是将所有国家代码和名称保存在一个数组中并遍历它。是否有其他更简单的解决方案?
在Java中,是否有一种简单的方法可以从给定的国家名称获取ISO2代码,例如当给定"瑞士"时获取"CH"?
目前我能想到的唯一解决方案是将所有国家代码和名称保存在一个数组中并遍历它。是否有其他更简单的解决方案?
以下是创建包含英国名称作为键和ISO2代码作为值的排序映射的方法:
static Map<String, String> countriesMap = Arrays.stream( Locale.getISOCountries() ).collect(
Collectors.toMap( (String code)-> new Locale( "", code ).getDisplayCountry(Locale.ENGLISH),
Function.identity(),(o1, o2) -> o1, TreeMap::new ));
JCountry jcountry = JCountry.getInstance();
CountryDB countryDB = jcountry.getCountriesDB();
// Get the countries DB hash maps <String, Country>
var dbByAlpha2 = countryDB.getCountriesMapByAlpha2();
var dbByAlpha3 = countryDB.getCountriesMapByAlpha3();
var dbByName = countryDB.getCountriesMapByName();
// Get Translations by language based locale
Optional<ResourceBundle> bundle = countryDB.getCountriesTranslations(Locale.GERMAN);
// MX -> Mexiko
var translatedCountryName = bundle.get().getString(dbByAlpha2.get("MX").getName());
// Languages DB
LanguageDB languageDB = new LanguageDBImpl(true);
var dbByAlpha2 = languageDB.getLanguagesMapByAlpha2();
// Get Translations by language based locale
Optional<ResourceBundle> bundle = languageDB.getLanguagesTranslations(Locale.GERMAN);
// Spanisch (Kastilisch)
var translatedCountryName = bundle.get().getString(dbByAlpha2.get("es").getName());