HashMap应用
来源:互联网 发布:js 屏幕手写板 编辑:程序博客网 时间:2024/06/02 05:15
之前遇到一个替换银行名称的需求,就是客户传过来的是银行简称,但是我们的系统里面 是将所有的银行存放在一个HashMap里面的,如下:
import java.util.HashMap;import java.util.Map;public class ConstantBank {public static Map<String, String> getBankName(){Map<String,String> bankMap =new HashMap<String, String>();bankMap.put("中国邮政储蓄银行" ,"中国邮政储蓄银行");bankMap.put("中国工商银行" ,"中国工商银行");bankMap.put("中国农业银行" ,"中国农业银行");bankMap.put("中国银行" ,"中国银行");bankMap.put("中国建设银行" ,"中国建设银行");bankMap.put("国家开发银行" ,"国家开发银行");bankMap.put("中国农业发展银行" ,"中国农业发展银行");...bankMap.put("...." ,"....");...bankMap.put("交通银行" ,"交通银行");return bankMap;}}客户那边传过来的银行,比如中国建设银行,客户那边给我的是建行,比如中国农业发展银行,客户给我的是农发行。所以进入我们系统做判断的时候就不能跟我们的银行名称
匹配,所以导致业务不能顺利进行。所以就要将这些不规则的银行名称进行处理。
刚开始的时候只有两个银行是用的简称,所以就想着在类里面写个替换方法直接写死,但是如果所有的银行都用简称的话,每一个银行都需要判断,所以就想着用配置文件的形式进行处理,就是将需要替换的银行名称在配置文件中设置好,读取配置文件进行替换就行了,不用添加一个银行就去修改一次类。处理的方法如下:
首先是读取配置文件的方法:
/** * 获取业务配置信息 * @param param * @return */public static String getBusiProperties(String param) {String property = "";Properties prop = new Properties();InputStream in = null;try {in = new BufferedInputStream(new FileInputStream("/apps/config/xxxx/xxxx/busiConfig.properties"));prop.load(in);property = prop.getProperty(param);} catch (IOException e) {e.printStackTrace();}return property;}
/** 银行简称**/public static String WELAB_BANK_VALID_OLD = "welab.oldbank.valid";/** 银行全称**/public static String WELAB_BANK_VALID_NEW = "welab.newbank.valid";
本地配置文件busiConfig.properties:
#productCodewelab.oldbank.valid=\u5149\u5927\u94F6\u884C,\u6D66\u53D1\u94F6\u884Cwelab.newbank.valid=\u4E2D\u56FD\u5149\u5927\u94F6\u884C,\u4E0A\u6D77\u6D66\u4E1C\u53D1\u5C55\u94F6\u884C
下面是处理的类:
package com.huateng.xxxx.xxxx.service.constant;import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;import com.huateng.iccs.utils.CommonUtil;public class CorrectBankName {public static Map<String, String> getBankName(){/** * 将名称不规范的银行配置到busiConfig.properties文件 * 读取配置文件,将不规范名称作为key放入map,将正确银行名称作为value放入map */Map<String,String> bankMap =new HashMap<String, String>();String[] oldMap = CommonUtil.getBusiProperties(Constant.WELAB_BANK_VALID_OLD).split(",");String[] newMap = CommonUtil.getBusiProperties(Constant.WELAB_BANK_VALID_NEW).split(",");for(int i = 0;i<oldMap.length;i++){bankMap.put(oldMap[i] ,newMap[i]);}return bankMap;}/** * 如果传入的银行名称与配置文件读出的一致就将正确的银行名称返回 * @param old * @return */public static String parseName(String old){Map<String, String> map = getBankName();String newName = null;for(Entry<String, String> vo : map.entrySet()){ if(vo.getKey().equals(old)){ newName = vo.getValue(); } }return newName;}}最后是方法调用:
//验证银行名称是否在允许放款的名称内if((ConstantBank.getBankName().get(load.getOpenBankName()) == null) &&(CorrectBankName.getBankName().get(load.getOpenBankName()) == null)){//修改代发状态为失败//TODO//发送邮件//TODO}else{//TODO 如果客户传过来的是银行简称,将银行全称赋值给对象if(CorrectBankName.getBankName().get(load.getOpenBankName()) != null){paySend.setBankName(CorrectBankName.parseName(load.getOpenBankName()));}else{paySend.setBankName(load.getOpenBankName());}//TODO}
重点不是怎么实现的,重点在于HashMap的使用,我在配置文件中将 银行简称放在 welab.oldbank.valid 中用逗号隔开,将银行全称 放在welab.newbank.valid中用逗号隔开,
在读取配置文件的时候,利用HashMap的 key存放银行简称,利用HashMap的value存放银行全称,这样一一替换,以后还有银行简称的时候将这些银行在配置文件中配置一下就行了。
阅读全文
0 0
- HashMap应用
- HashMap 应用小例子
- 合理应用HashMap扩容
- HashMap,LinkedHashMap,TreeMap应用
- HashMap简介与应用
- HashMap的应用,CF650A
- HashMap的实际应用
- Hashmap在freemarker中的应用
- JAVA-HashMap的应用例子
- 18 java HashMap 的应用
- Java中的集合类HashMap的应用
- 19.java HashMap 的应用实例
- Android 对HashMap深度分析和应用
- SparseArray替代HashMap----Android应用性能优化
- HashMap,TreeMap以及LinkedHashMap应用实例
- HashMap与TreeMap的应用与区别
- HashMap与TreeMap的应用与区别
- 关于Java中HashMap的常见应用
- 大家好,给你们介绍一下,这是我的....
- Ubuntu 14.04 LTS下设置命令模式和开启ssh
- Android-25种开源炫酷动画框架
- 详解COM Add In的LoadBehavior及其妙用
- 关于android studio 打包签名的问题
- HashMap应用
- php+mysql+nginx
- 使用sqlalchemy包将pandas的DataFrame数据写入MySQL数据库
- 学习曲线
- 【程序员面试宝典】有1千万条短信,找出重复出现最多的前10条
- 神经网络训练细节(一)
- 数论复习笔记
- Oracle EBS财务模块(五)日记账
- mount nfs