在ISO 3166中有246个国家,你可能会在此背后得到一个继电器大枚举.我更喜欢使用包含国家/地区列表的

XML文件,您可以从

http://www.iso.org/下载一个并加载它们(例如,当应用程序启动时).

然后,因为你需要它们在GWT中作为RPC调用加载它们,但记得缓存那些(某种延迟加载),所以你不会每次都加载它们.

我认为这比在代码中保存它们更好,因为每次访问模块时你都会完成加载完整列表,即使用户不需要使用这个列表.

所以你需要一些能保住国家的东西:

public class Country

{

private final String name;

private final String code;

public Country(String name, String code)

{

this.name = name;

this.code = code;

}

public String getName()

{

return name;

}

public String getCode()

{

return code;

}

public boolean equals(Object obj)

{

if (this == obj)

{

return true;

}

if (obj == null || getClass() != obj.getClass())

{

return false;

}

Country country = (Country) obj;

return code.equals(country.code);

}

public int hashCode()

{

return code.hashCode();

}

}

对于GWT,这个类需要实现IsSerializable.

您可以使用以下命令在服务器端加载:

import java.util.ArrayList;

import java.util.List;

import java.io.InputStream;

import org.dom4j.Attribute;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

public class CountriesService

{

private static final String EL_COUNTRY = "ISO_3166-1_Entry";

private static final String EL_COUNTRY_NAME = "ISO_3166-1_Country_name";

private static final String EL_COUNTRY_CODE = "ISO_3166-1_Alpha-2_Code_element";

private List countries = new ArrayList();

public CountriesService(InputStream countriesList)

{

parseCountriesList(countriesList);

}

public List getCountries()

{

return countries;

}

private void parseCountriesList(InputStream countriesList)

{

countries.clear();

try

{

Document document = parse(countriesList);

Element root = document.getRootElement();

//noinspection unchecked

Iterator i = root.elementIterator(EL_COUNTRY);

while (i.hasNext())

{

Element countryElement = i.next();

Element countryName = countryElement.element(EL_COUNTRY_NAME);

Element countryCode = countryElement.element(EL_COUNTRY_CODE);

String countryname = countryName.getText();

countries.add(new Country(countryname, countryCode.getText()));

}

}

catch (DocumentException e)

{

log.error(e, "Cannot read countries list");

}

catch (IOException e)

{

log.error(e, "Cannot read countries list");

}

}

public static Document parse(InputStream inputStream) throws DocumentException

{

SAXReader reader = new SAXReader();

return reader.read(inputStream);

}

}

当然,如果您需要通过ISO 2字母代码查找国家/地区,您可能不会将List更改为Map.如果您按照提到的那样,按大陆需要单独的国家/地区,则可以从ISO 3166扩展XML并添加自己的元素.只需检查他们的(ISO网站)许可证.

java地区_在Java中存储国家/地区代码,名称和Continent的最佳方式相关推荐

  1. mysql图片_往MySQL中存储图片的方法

    1 介绍 在设计到数据库的开发中,难免要将图片或音频文件插入到数据库中的情况.一般来说,我们可以同过插入图片文件相应的存储位置,而不是文件本身,来避免直接向数据库里插入的麻烦.但有些时候,向MySQL ...

  2. mysql怎么放入图片_往MySQL中存储图片的方法

    1 介绍 在设计到数据库的开发中,难免要将图片或音频文件插入到数据库中的情况.一般来说,我们可以同过插入图片文件相应的存储位置,而不是文件本身,来避免直接向数据库里插入的麻烦.但有些时候,向MySQL ...

  3. java三元组_数据结构(java语言描述)串与数组——稀疏矩阵的三元组表存储

    知识点补充: 稀疏矩阵:是具有较多零元素且非零元素的分布无规律的矩阵.(一般矩阵是用多(二)维数组存储). 但是,稀疏矩阵的存储比较浪费存储空间,因此为了节省存储空间可以用一个三元组表来存储稀疏矩阵. ...

  4. linux java 栈_关于Java中栈与堆的思考

    1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取速度比堆要快,仅次于直接位于C ...

  5. java 企业版_下列版本中哪个是Java 企业版

    下列版本中哪个是Java 企业版 2021-02-07 下列版本中哪个是Java 企业版 张爱玲评价自己的服饰:"仿佛穿着博物院的()到处走,遍体森森然飘飘欲仙".转动惯量是刚体转 ...

  6. jython 导入java包_在jython中导入java类

    我用python处理NLP.有一个NLP工具,即Zemberek,用于土耳其语.但它是用java编写的.所以我必须使用jython来导入这些类.我安装了Jython2.7.另外,我安装了eclipse ...

  7. 修改docker内java内存_在docker中使用java的内存情况

    Java和Docker不是天然的朋友. Docker可以设置内存和CPU限制,而Java不能自动检测到.使用Java的Xmx标识(繁琐/重复)或新的实验性JVM标识,我们可以解决这个问题. 虚拟化中的 ...

  8. 谷歌去水印java实现_在Java中实现Google的“您的意思是”功能

    谷歌去水印java实现 介绍 搜索引擎用户经常因各种原因而拼写错误的搜索词,包括键盘问题(键不起作用),陌生的国际名称(例如Sigmund Freud),意外更改一个字母(Sinpsons)或添加一个 ...

  9. java 抛物线_关于java中模拟抛物线轨迹的问题

    展开全部 看了这套题目感觉很有兴趣,就花了一e69da5e6ba903231313335323631343130323136353331333264623831个中午亲手给你写了一个类似的例子,相信可 ...

最新文章

  1. esxi 6.7 7.0 区别_摩托车国产车和合资车有什么区别?
  2. django前端引用数据_「基于Python技术的智慧中医商业项目」Django前端网站篇-5.资讯的数据交互...
  3. 【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)
  4. isotope == parallax 例子
  5. js笔记(二)数组、对象、this
  6. php按照二维数组某个字段排序,PHP 二维数组根据某个字段排序
  7. 用memcached-session-manager实现Tomcat集群
  8. 怎么检测声音频率和幅值_【电缆小课堂】国网天津电缆公司电缆带电检测团队介绍及典型案例分析...
  9. (十一)洞悉linux下的Netfilteriptables:iptables命令行工具源码解析【上】
  10. idea引不进jdk的包_idea install 时提示jdk的某个jar包的包不存在的问题
  11. Robotics 机器人运动学 DH参数建模
  12. linux 卸载nvidia显卡驱动,Ubuntu 16.04 卸载Nvidia显卡驱动和cuda
  13. 计算机系军训口号四句霸气,军训口号 四句 霸气
  14. 光立方原理讲解_漯河放大镜原理,车灯透镜_晶亮光电
  15. 宏碁 AN515-51支持nvme固态接口
  16. 关于华为和荣耀手机升级鸿蒙系统之后无法连接magicbook多屏协同的问题
  17. 测试开发工作者日记:2020.10.21
  18. (二)向前 向后 中心差商
  19. nvme-cli常用指令
  20. 传输层协议——UDP和TCP

热门文章

  1. leecode[一]
  2. 身份证丢了如何网上补办
  3. html表单按钮有,用好表单的按钮(一)_html
  4. winform按钮切换页面_C#如何通过一个按钮实现窗体界面的中英文切换?
  5. vue手写一个简单日历demo
  6. MarkDown+Hbuilder学习总结
  7. 190919 pwn-第五空间final_十生
  8. Spring Boot + Vue + Shiro 实现前后端分离、权限控制 (附源码)
  9. python创建全为0的二维列表遇到的坑
  10. 课工场“不止所见 超乎想象”首期AI尖端人才班答辩会在北京成功举行