java Map

java Map

CreateTime--2017年5月26日08:44:16

Author:Marydon

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();
      4.5.2.2 指定字符串轉換格式
/**
 * 將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}]

 

相關文章
相關標籤/搜索