hashmap简单实例(个人使用经验)
一、HashMap<int,String>是错误的:因为int是基本类型,而key和value要求是对象,所以要用Integer而不是int。HashMap<String,Object>的value一定要是Object类型。
二、HashMap<>同一元素添加二次覆盖
HashMap test = new HashMap<Integer, String>();
test.put(1, "i");
test.put(2, "you");
test.put(3, "she");
test.put(3, "he");
那么,test.size是3,而key为3所对应的value为he。
三、hashmap综合应用实例:
文件region_template基本地域数据,从geoip.txt的ip映射的地域数据中提取省、市信息,补充到region_template后面输出到新文件region_template_analytic。
代码如下:
importjava.io.*;
importjava.util.HashMap;
import java.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;
import java.io.OutputStreamWriter;
importjava.util.ArrayList;
importjava.util.Iterator;
importjava.util.List;
importjava.util.Set;
importjava.util.Vector;
importcom.vpon.wizad.etl.util.Region;
public classmappingToRegion_template {
private HashMap<String, Region>myRegionTemplates;
private HashMap<String, Region>RegionAnalytic;
public mappingToRegion_template(StringregionFile)
throwsUnsupportedEncodingException, FileNotFoundException {
this.myRegionTemplates = newHashMap<String, Region>();
this.RegionAnalytic = newHashMap<String, Region>();
File allRegion = newFile(regionFile);
BufferedReader br = null;
String line = "";
String cvsSplitBy =",";
if (allRegion == null)
System.out.println("nofile of" + regionFile);
else {
try {
br = newBufferedReader(new InputStreamReader(new FileInputStream(regionFile),"utf-8"));
while((line = br.readLine()) != null) {
//Skip empty lines.
if(line.matches("^[\\n\\s]+$")) {
continue;
}
String[]row = line.split(cvsSplitBy);
// System.out.println(line.toString());
StringregionID = row[0];
StringregionName = row[1];
booleancountry = false;
booleanprovince = false;
intcityLevel = 0;
if(row[2].equals("1")) {
country= true;
}
if(row[3].equals("1")) {
province= true;
}
try{
cityLevel= Integer.parseInt(row[4]);
}catch (Exception e) {
cityLevel= 0;
}
StringparentRegionID = row[5];
if(!parentRegionID.matches("\\d+")) {
parentRegionID= null;
}
// if(regionName.matches("^包")){
// System.out.println(regionName);
//
// }
if(regionName.matches("(.*)(市|省)$")){//thesame as "(.*)[市省]$"
//if(regionName.endsWith("省")|regionName.endsWith("市")){
regionName= regionName.substring(0, regionName.length()-1);
}elseif( regionName.matches("(.*)(区)$") )
{
if(regionName.startsWith("内蒙古")){
regionName= regionName.substring(0,3);
}else{
regionName= regionName.substring(0,2);
}
// System.out.println(regionName);
}
Regionregion = new Region(regionID, regionName, country,province, cityLevel,parentRegionID);
// System.out.println(region.getName());
if(this.myRegionTemplates.containsKey(regionName))
System.out.println(regionName);
this.myRegionTemplates.put(regionName,region);
this.RegionAnalytic.put(regionID,region);
}
} catch (FileNotFoundExceptione) {
e.printStackTrace();
} catch (IOExceptione) {
e.printStackTrace();
} finally {
if (br !=null) {
try{
br.close();
}catch (IOException e) {
e.printStackTrace();
}
}
}
}
// 吉林处理后的问题,少了
System.out.println(this.myRegionTemplates.size());
System.out.println(this.RegionAnalytic.size());
}
private void mapADAssociation(StringgeoipFile) throws IOException
{
System.out.println("pid:"+this.myRegionTemplates.get("吉林").getRegionID());
int regionNumber =this.RegionAnalytic.size();
BufferedReader br = null;
String line = "";
String FilesplitBy ="\t";
try{
br = newBufferedReader(new InputStreamReader(new FileInputStream(
geoipFile),"utf-8"));
while ((line =br.readLine()) != null) {
// Skipempty lines.
if(line.matches("^[\\n\\s]+$")) {
continue;
}
String[]row = line.split(FilesplitBy);
Stringgeoip_province = row[2];
Stringgeoip_city = row[3];
//city isnull: prosses as province
if(geoip_city == null) {
if(geoip_province == null) {
thrownew RuntimeException("province and city are both null");
}else{
geoip_city= geoip_province;
}
}
//System.out.println(geoip_province+","+geoip_city);
if(geoip_province.matches("国外"))
continue;
if(geoip_province == geoip_city) {
if(this.myRegionTemplates.containsKey(geoip_province)) {
continue;
}else {
System.out.println(geoip_province);
thrownew RuntimeException("illegal province: no that " + geoip_province);
}
} else {
if(this.myRegionTemplates.containsKey(geoip_city)){
continue;
}else{
// System.out.println(geoip_province+","+geoip_city);
RegionparentRegion = this.myRegionTemplates.get(geoip_province);
StringparentRegionID= parentRegion.getRegionID();
booleancountry = false;
booleanprovince = false;
int cityLevel = 0;
String regionID =Integer.toString(++regionNumber);
Region region = new Region(regionID,geoip_city, country, province, 0, parentRegionID);
// this.myRegionTemplates.put(geoip_city, region);
this.RegionAnalytic.put(regionID,region);
}
}
}
} catch (RuntimeException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
private void writeToFile(StringoutputFile) throws IOException {
File file = newFile(outputFile);
if(!file.exists())
file.createNewFile();
FileOutputStream out=newFileOutputStream(file,true);
System.out.println(this.myRegionTemplates.size());
System.out.println(this.RegionAnalytic.size());
for(int i = 1; i <=this.RegionAnalytic.size(); i++)
{
Region outRegion =this.RegionAnalytic.get(Integer.toString(i));
int isCountry = outRegion.isCountry()?1:0;
int isProvince =outRegion.isProvince()?1:0;
StringBuffer sb =new StringBuffer(outRegion.getRegionID()+","+outRegion.getName()
+","+isCountry+","+isProvince+","+outRegion.getCityLevel()+","+outRegion.getParentRegionID()+"\n");
// StringBuffer sb=newStringBuffer(outRegion.toString());
out.write(sb.toString().getBytes("utf-8"));
}
}
public static void main(String[] args)throws Exception {
String regionFile = "F:/region_template/region_template";
String geoipFile ="F:/geoip.txt";
String outputFile ="F:/region_template_analytic/region_template_analytic";
mappingToRegion_template db =new mappingToRegion_template(regionFile);
db.mapADAssociation(geoipFile);
db.writeToFile(outputFile);
}
}
hashmap简单实例(个人使用经验)的更多相关文章
- resteasy简单实例
1.建一个maven web项目 新建一个maven项目,next,第一个框不要勾选 选择maven-archetype-webapp,建一个web项目 键入项目组织id与项目id 一般此时搭建的只是 ...
- jsonrpc环境搭建和简单实例
一.环境准备 下载需要的jar包和js文件,下载地址:https://yunpan.cn/cxvbm9DhK9tDq 访问密码 6a50 二.新建一个web工程,jsonrpc-1.0.jar复制到 ...
- Hibernate(二)__简单实例入门
首先我们进一步理解什么是对象关系映射模型? 它将对数据库中数据的处理转化为对对象的处理.如下图所示: 入门简单实例: hiberante 可以用在 j2se 项目,也可以用在 j2ee (web项目中 ...
- 最新 Eclipse IDE下的Spring框架配置及简单实例
前段时间开始着手学习Spring框架,又是买书又是看视频找教程的,可是鲜有介绍如何配置Spring+Eclipse的方法,现在将我的成功经验分享给大家. 本文的一些源代码来源于码农教程:http:// ...
- 修改js confirm alert 提示框文字的简单实例
修改js confirm alert 提示框文字的简单实例: <!DOCTYPE html> <html> <head lang="en"> & ...
- 利用navicat创建存储过程、触发器和使用游标的简单实例
利用navicat创建存储过程.触发器和使用游标的简单实例 标签: navicat存储过程触发器mysql游标 2013-08-03 21:34 15516人阅读 评论(1) 收藏 举报 分类: 数 ...
- 【转】Android Https服务器端和客户端简单实例
转载地址:http://blog.csdn.net/gf771115/article/details/7827233 AndroidHttps服务器端和客户端简单实例 工具介绍 Eclipse3.7 ...
- Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例
目录 [TOC] 1.环境准备 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...
- vue路由的简单实例
vue2.0 和 vue1.0 路由的语法还是有点稍微的差别,下面介绍一下vue-router 2的简单实例: <!DOCTYPE html> <html lang="en ...
随机推荐
- URLDecoder: Illegal hex characters in escape (%) pattern - For input string
原因:后台发布文章的时候,内容里面有%,导致后台URLDecoder.decode()转码的时候报错. 看了java.net.URLDecoder的decode()的源码,原来是转码错误. 贴出部分代 ...
- Cisco banner 登陆消息提示设置命令详解
从法律角度来看,登陆消息非常重要.当入侵者进入网络而没有受到适当的警告时,他们有可能赢得官司.在放置登陆消息之前应让律师检查下,永远不要使用"欢迎"等问候语,以免被误解为邀请大家使 ...
- Python学习---字符串处理
This world is but a canvas to our imagination. 世界只是我们的想象的画布. ----Apri 22 ''' 题目内容: "Pig Latin&q ...
- FJUT寒假作业涨姿势题解
题意非常简单易懂,对于涨姿势0,数据非常小,比较容易想到的是直接循环暴力解题完成任务.把数据放入数组arr,循环i,j控制所有区间算和.结果记入vis. 到了涨姿势1,2,3,我们观察数据变化,发现数 ...
- iOS支付宝,微信,银联支付集成封装调用(下)
一.越来越多的app增加第三方的功能,可能app有不同的页面但调用相同的支付方式,例如界面如下: 这两个页面都会使用第三方支付支付:(微信,支付宝,银联)如果在每一个页面都直接调用第三方支付的接口全部 ...
- 谈谈Circuit Breaker在.NET Core中的简单应用
前言 由于微服务的盛行,不少公司都将原来细粒度比较大的服务拆分成多个小的服务,让每个小服务做好自己的事即可. 经过拆分之后,就避免不了服务之间的相互调用问题!如果调用没有处理好,就有可能造成整个系统的 ...
- iOS开源照片浏览器框架SGPhotoBrowser的设计与实现
简介 近日在制作一个开源加密相册时附带着设计了一个照片浏览器,在进一步优化后发布到了GitHub供大家使用,该框架虽然没有MWPhotoBrowser那么强大,但是使用起来更为方便,操作更符合常规相册 ...
- Scheme r5rs letrec的用法
说明,这是r5rs的用法. (letrec ((<variable> <init>) ...) <body>) 假设((<variable> <i ...
- 安卓高级3 RecyclerView 和cardView使用案例
cardView: 添加依赖:在Studio搜索cardview即可 在V7包中 或者直接在gradle中添加 compile 'com.android.support:cardview-v7:24. ...
- Bootstrap3 概述
注意:HTML5 文档类型 Bootstrap 使用到的某些 HTML 元素和 CSS 属性需要将页面设置为 HTML5 文档类型.在你项目中的每个页面都要参照下面的格式进行设置. <!DOCT ...