java地区_在Java中存储国家/地区代码,名称和Continent的最佳方式
在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的最佳方式相关推荐
- mysql图片_往MySQL中存储图片的方法
1 介绍 在设计到数据库的开发中,难免要将图片或音频文件插入到数据库中的情况.一般来说,我们可以同过插入图片文件相应的存储位置,而不是文件本身,来避免直接向数据库里插入的麻烦.但有些时候,向MySQL ...
- mysql怎么放入图片_往MySQL中存储图片的方法
1 介绍 在设计到数据库的开发中,难免要将图片或音频文件插入到数据库中的情况.一般来说,我们可以同过插入图片文件相应的存储位置,而不是文件本身,来避免直接向数据库里插入的麻烦.但有些时候,向MySQL ...
- java三元组_数据结构(java语言描述)串与数组——稀疏矩阵的三元组表存储
知识点补充: 稀疏矩阵:是具有较多零元素且非零元素的分布无规律的矩阵.(一般矩阵是用多(二)维数组存储). 但是,稀疏矩阵的存储比较浪费存储空间,因此为了节省存储空间可以用一个三元组表来存储稀疏矩阵. ...
- linux java 栈_关于Java中栈与堆的思考
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取速度比堆要快,仅次于直接位于C ...
- java 企业版_下列版本中哪个是Java 企业版
下列版本中哪个是Java 企业版 2021-02-07 下列版本中哪个是Java 企业版 张爱玲评价自己的服饰:"仿佛穿着博物院的()到处走,遍体森森然飘飘欲仙".转动惯量是刚体转 ...
- jython 导入java包_在jython中导入java类
我用python处理NLP.有一个NLP工具,即Zemberek,用于土耳其语.但它是用java编写的.所以我必须使用jython来导入这些类.我安装了Jython2.7.另外,我安装了eclipse ...
- 修改docker内java内存_在docker中使用java的内存情况
Java和Docker不是天然的朋友. Docker可以设置内存和CPU限制,而Java不能自动检测到.使用Java的Xmx标识(繁琐/重复)或新的实验性JVM标识,我们可以解决这个问题. 虚拟化中的 ...
- 谷歌去水印java实现_在Java中实现Google的“您的意思是”功能
谷歌去水印java实现 介绍 搜索引擎用户经常因各种原因而拼写错误的搜索词,包括键盘问题(键不起作用),陌生的国际名称(例如Sigmund Freud),意外更改一个字母(Sinpsons)或添加一个 ...
- java 抛物线_关于java中模拟抛物线轨迹的问题
展开全部 看了这套题目感觉很有兴趣,就花了一e69da5e6ba903231313335323631343130323136353331333264623831个中午亲手给你写了一个类似的例子,相信可 ...
最新文章
- esxi 6.7 7.0 区别_摩托车国产车和合资车有什么区别?
- django前端引用数据_「基于Python技术的智慧中医商业项目」Django前端网站篇-5.资讯的数据交互...
- 【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)
- isotope == parallax 例子
- js笔记(二)数组、对象、this
- php按照二维数组某个字段排序,PHP 二维数组根据某个字段排序
- 用memcached-session-manager实现Tomcat集群
- 怎么检测声音频率和幅值_【电缆小课堂】国网天津电缆公司电缆带电检测团队介绍及典型案例分析...
- (十一)洞悉linux下的Netfilteriptables:iptables命令行工具源码解析【上】
- idea引不进jdk的包_idea install 时提示jdk的某个jar包的包不存在的问题
- Robotics 机器人运动学 DH参数建模
- linux 卸载nvidia显卡驱动,Ubuntu 16.04 卸载Nvidia显卡驱动和cuda
- 计算机系军训口号四句霸气,军训口号 四句 霸气
- 光立方原理讲解_漯河放大镜原理,车灯透镜_晶亮光电
- 宏碁 AN515-51支持nvme固态接口
- 关于华为和荣耀手机升级鸿蒙系统之后无法连接magicbook多屏协同的问题
- 测试开发工作者日记:2020.10.21
- (二)向前 向后 中心差商
- nvme-cli常用指令
- 传输层协议——UDP和TCP
热门文章
- leecode[一]
- 身份证丢了如何网上补办
- html表单按钮有,用好表单的按钮(一)_html
- winform按钮切换页面_C#如何通过一个按钮实现窗体界面的中英文切换?
- vue手写一个简单日历demo
- MarkDown+Hbuilder学习总结
- 190919 pwn-第五空间final_十生
- Spring Boot + Vue + Shiro 实现前后端分离、权限控制 (附源码)
- python创建全为0的二维列表遇到的坑
- 课工场“不止所见 超乎想象”首期AI尖端人才班答辩会在北京成功举行