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}]