java map包_java Map

java Map

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

Author:Marydon

四、java数据类型之Map

需要导入包:

importjava.util.Map;import java.util.HashMap;

(一)数据格式

1.1 Map与HashMap

{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不区分大小写

举例:

Map ignoreCaseMap = newCaseInsensitiveMap();

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

(二)初始化

//方式一:初始化map

Map map = new HashMap();//方式二:初始化map并指定map容量大小

HashMap map2 = new HashMap(1);

说明:

初始化的时候既可以指定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()方法才是真正意义上的拷贝。

4.3.2 删

方式一:使用remove方法

语法:

map.remove("key")

用途:移除map中指定的键值对

说明:

调用Map的remove(),如果该键存在,返回该key所映射的值;否则,返回null。

举例:

Map map = new HashMap();

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 mapData = new HashMap();

mapData.put("MSG1", "aa");

mapData.put("ERRORMSG1", "bb");

mapData.put("FILENAME1", "cc");

List> jyxx = new ArrayList>();

jyxx.add(mapData);

mapData= new HashMap();//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();,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

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 map = new HashMap();

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转换成字符串

* 格式:键+"|"+值+"$"

*@parammap

*@return

*/

privateString MapToString(Map map) {

String str= "";

Iterator iterator=map.entrySet().iterator();while(iterator.hasNext()) {

Entry entry = (Entry) iterator.next();

str+= entry.getKey() + "|" + entry.getValue() + "$";

}returnstr;

}

4.5.3 Map.toString()后字符串转换回Map(map形式字符串-->Map)

/*** Map.toString()后字符串转换回Map

*@paramstr Map字符串

*@returnMap对象*/

public static MapmapStringToMap(String str) {

str= str.substring(1, str.length() - 1);

String[] strs= str.split(",");

Map map = new HashMap<>();for(String string : strs) {

String key= string.split("=")[0].trim();

String value= string.split("=")[1].trim();

map.put(key, value);

}returnmap;

}

(六)进一步封装

(七)功能实现

UpdateTime--2017年9月4日17:22:06

4.7.1  Map中key的大小写转换

实现:将Map中的key全部转换成小写

Map mapData = new HashMap();

mapData.put("MSG1", "aa");

mapData.put("ERRORMSG1", "bb");

mapData.put("FILENAME1", "cc");

List> jyxx = new ArrayList>();

jyxx.add(mapData);

System.out.println(jyxx.toString());//[{MSG1=aa, ERRORMSG1=bb, FILENAME1=cc}]

mapData = new HashMap();//使用foreach迭代List中的Map

for (Mapmap : jyxx) {//使用Entry类Map中的每个键值对

for (Entryentry : 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}]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值