4、java数据类型之Maphtml
须要导入包:java
import java.util.Map; import java.util.HashMap;
(一)数据格式apache
1.1 Map与HashMapjson
{FHIGHPRICE_VILLLEVE=0, FSTATUS=1, FPROVLEVELLIMIT=1, FBEGINDATE=, FENDDATE=, FCLASSNAME=药品类, FITEMSIZE=, FHIGHPRICE_TOWNLEVEL=0, FCATALOGTYPE=, FVILLLEVELLIMIT=1, FID=400119, FCLIINHOSLIMIT=3, FHIGHPRICE_CITYLEVEL=0, FREMARK=, methodName=updateTDICTCHARGEITEM, FFORMS=, FITEMTYPE=0, FCLASSCODE=01, FGENERALCODE=, FRCODE=410000, FMEDICARE=2, FZJM=DSTN(YNS), FITEMCODE=W9999990019003y, FHIGHPRICE_COUNLEVEL=0, FDRUGTYPE=1, FITEMNAME=达沙替尼(依尼舒)(20mg×7粒), FTOWNLEVELLIMIT=1, FHIGHPRICE_PROVLEVEL=0, FCOUNLEVELLIMIT=1, FCOMPUTERATIO=1.0, FFEECODE=0101, FUNIT=, FORGLIMIT=0}
1.2 CaseInsensitiveMap测试
所需jar包:commons-collections-3.2.1.jar
须要导入
import org.apache.commons.collections.map.CaseInsensitiveMap;优化
特征:Map中的键key不区分大小写this
举例:spa
Map<String, Object> ignoreCaseMap = new CaseInsensitiveMap(); ignoreCaseMap.put("aaa", "ok"); System.out.println(ignoreCaseMap.get("aaa"));// ok System.out.println(ignoreCaseMap.get("aAa"));// ok System.out.println(ignoreCaseMap.get("AAa"));// ok System.out.println(ignoreCaseMap.get("AAA"));// ok
(二)初始化code
// 方式一:初始化map Map<String, String> map = new HashMap<String, String>(); // 方式二:初始化map并指定map容量大小 HashMap map2 = new HashMap(1);
说明:orm
初始化的时候既能够指定Map初始容量大小也能够不指定,主要涉及的是内存的优化,之后须要再说;// TODO
初始化的时候既能够对泛型进行控制也能够不作泛型控制,建议添加泛型控制;
实例化的时候既能够向上类型转换也能够不作转换,看需求;
当现有容量没法承载时,容量会自动扩增,具体扩增多少,有待研究。// TODO
论证容量自动扩增:
map2.put("key1", 1); map2.put("key2", 2); System.out.println(map2.toString());// {key2=2, key1=1}
(三)经常使用操做
4.3.1 增
方式一:使用put方法
语法:
map.put("key", value)
用途:往map中添加一个键值对key=value
方式二:使用putAll方法
语法:
map.putAll(map2)
用途:将Map对象A中全部的键值对复制到另外一个Map对象B中
注意:
使用Map调用putAll()方法,并非真正意义上的拷贝,Map对象B只是对Map对象A进行了引用,当Map对象A中的内容发生变化时,Map对象B也会发生变化;
使用HashMap调用putAll()方法才是真正意义上的拷贝。
原理:请参考http://www.dutycode.com/map_kaobei_shenkaobei_qiankaobei.html
4.3.2 删
方式一:使用remove方法
语法:
map.remove("key")
用途:移除map中指定的键值对
说明:
调用Map的remove(),若是该键存在,返回该key所映射的值;不然,返回null。
举例:
Map<String, String> map = new HashMap<String, String>(); map.put("test", "测试remove()的返回值"); // 移除存在的键 String removeMsg = map.remove("test"); System.out.println(removeMsg);// 测试remove()的返回值 System.out.println("移除掉键key以后的Map内容为:" + map.toString());// {} // 移除并不存在的键 removeMsg = map.remove("test1"); System.out.println(removeMsg);// null
方式二:使用clear方法
语法:
map.clear()
用途:清除map对象中全部的键值对
map.clear()方法使用条件:
这种状况不能使用
Map<String, Object> mapData = new HashMap<String, Object>(); mapData.put("MSG1", "aa"); mapData.put("ERRORMSG1", "bb"); mapData.put("FILENAME1", "cc"); List<Map<String, Object>> jyxx = new ArrayList<Map<String, Object>>(); jyxx.add(mapData); mapData = new HashMap<String, Object>(); //mapData.clear();不能使用clear()方法 mapData.put("MSG2", "aa"); mapData.put("ERRORMSG2", "bb"); mapData.put("FILENAME2", "cc"); jyxx.add(mapData); System.out.println(jyxx.toString());
使用mapData = new HashMap<String,String>();,list存储数据为:[{MSG1=aa, ERRORMSG1=bb, FILENAME1=cc}, {MSG2=aa, ERRORMSG2=bb, FILENAME2=cc}];
使用mapData.clear();,list存储数据为:[{MSG2=aa, ERRORMSG2=bb, FILENAME2=cc}, {MSG2=aa, ERRORMSG2=bb, FILENAME2=cc}]
这种状况可使用
for (int j = 0; j < deptId.length; j++) { // 清空Map deptDocMap.clear(); // 会诊申请ID deptDocMap.put("CONSULT_APPLY_ID", CONSULT_APPLY_ID); // 医生信息确定<=科室信息 if (j < docId.length) { deptDocMap.put("CONSULT_DOCTOR_ID", docId[j]); deptDocMap.put("CONSULT_DOCTOR", docName[j]); deptDocMap.put("DOCTOR_PHONE", docPhone[j]); } deptDocMap.put("CONSULT_DEPENT_ID", deptId[j]); deptDocMap.put("CONSULT_DEPENT", deptName[j]); this.daoCONSULT_DEPENT_DOCTOR_INFO.insertOUTPATIENT_CONSULT_DD_INFO(deptDocMap); }
说明:再也不引用时能够清空
4.3.3 改
语法:
map.put("已存在的key",改变后的值)
用途:根据存在的key修改对应的value
4.3.4 取值
语法:
map.get("key")
用途:根据key获取对应的value
说明:map对象中若是存在该key则返回其所对应的值;不然,返回null。
举例论证:
String COURSE_NAME = (String)paramsMap.get("COURSE_NAME"); // 病程名称存在 if (null != COURSE_NAME && !"".equals(COURSE_NAME)) { }
4.3.5 迭代Map
Map<String,Object> map = new HashMap<String,Object>(); map.put("语文", 1); map.put("数学", 2); map.put("英语", 3); map.put("历史", 4); map.put("政治", 5); map.put("生物", 6); map.put("生物", 7); map.put("化学", 8);
4.3.5.1 迭代Map
UpdateTime--2017年6月9日10:00:05
4.3.5.2 只迭代键
//只遍历键 for (String key:map.keySet()) { System.out.println(key); }
4.3.5.3 只迭代值
//只遍历值 for (Object val:map.values()) { System.out.println(val); }
(四)其余用法
UpdateTime--2017年12月5日16:47:10
4.4.1 isEmpty()
用途:用于判断Map对象是否为空,返回true/false
举例:
// 判断Map对象是否为空,返回true/false transfromMap.isEmpty();
4.4.2 判断map中是否包含指定的key
方式一:map.containKey("key") ,返回true/false;
方法二:map.get("key") ,若存在返回对应的值,不存在返回null;
(五)格式转换
4.5.1 Map集合转换成json
4.5.2 将Map转换成字符串(Map-->String)
4.5.2.1 不含特殊转换格式/** * 将Map转换成字符串 */ //方法一 String mapStr = String.valueOf(map); //方法二 String mapStr = map.toString();
/** * 将Map转换成字符串 * 格式:键+"|"+值+"$" * @param map * @return */ private String MapToString(Map map) { String str = ""; Iterator iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Entry<String, Object> entry = (Entry<String, Object>) iterator.next(); str += entry.getKey() + "|" + entry.getValue() + "$"; } return str; }
4.5.3 Map.toString()后字符串转换回Map(map形式字符串-->Map)
/** * Map.toString()后字符串转换回Map * @param str Map字符串 * @return Map对象 */ public static Map<String, String> mapStringToMap(String str) { str = str.substring(1, str.length() - 1); String[] strs = str.split(","); Map<String, String> map = new HashMap<>(); for (String string : strs) { String key = string.split("=")[0].trim(); String value = string.split("=")[1].trim(); map.put(key, value); } return map; }
(六)进一步封装
(七)功能实现
UpdateTime--2017年9月4日17:22:06
4.7.1 Map中key的大小写转换
实现:将Map中的key所有转换成小写
Map<String, Object> mapData = new HashMap<String, Object>(); mapData.put("MSG1", "aa"); mapData.put("ERRORMSG1", "bb"); mapData.put("FILENAME1", "cc"); List<Map<String, Object>> jyxx = new ArrayList<Map<String, Object>>(); jyxx.add(mapData); System.out.println(jyxx.toString());// [{MSG1=aa, ERRORMSG1=bb, FILENAME1=cc}] mapData = new HashMap<String, Object>(); // 使用foreach迭代List中的Map for (Map<String, Object> map : jyxx) { // 使用Entry类Map中的每一个键值对 for (Entry<String, Object> entry : map.entrySet()) { // 将key转换成小写的Map存入到实例化后的mapData中 mapData.put(entry.getKey().toLowerCase(), entry.getValue()); } } // 将转换后的Map添加到List中的第一个位置 jyxx.add(0, mapData); System.out.println(jyxx.toString());// [{filename1=cc, errormsg1=bb, msg1=aa}, {MSG1=aa, ERRORMSG1=bb, FILENAME1=cc}]