黑马程序员技术交流社区

标题: 学习Map接口是遇到了疑问希望学长学姐们进来帮下忙 [打印本页]

作者: 微笑=.一瞬间    时间: 2014-4-9 13:45
标题: 学习Map接口是遇到了疑问希望学长学姐们进来帮下忙
使用 Map<String,String> map=new HashMap<String,Sring>();
然后 map.put("01","lisi"); 接下来可以使用map.containsKey("01")判断map中是否有与01对应的value值
但是为什么
使用HashMap<String,String> map=new HashMap<String,String>();
然后 map.put("01","lisi"); 接下来可以使用map.containsKey("01")判断map中是否有与01对应的value值就会出错呢? 在api查找是 HashMap类中有containsKey方法啊,这是为什么呢?
作者: 微笑=.一瞬间    时间: 2014-4-20 13:26
map.containsKey(key):判断map是否包含你指定的key名

Map map = new HahsMap();

map.put("yangrong","123");


//判断map对象中的键是否包含了yangrong这个键
if(map.containsKey("yangrong")) {

.........

}


=======================================================================

//判断Map是否为空

Map clientExtInfoMap = getClientExtInfo(clientId);

//isEmpty()方法也是判断Map是否为空

if (clientExtInfoMap == null || clientExtInfoMap.isEmpty()) {
return false;
}

====================================================================

Map对象遍历方法:


  Map map = readOutXMl(content);

//遍历Map
/* Iterator it = map.entrySet().iterator();   
   
     while (it.hasNext()) {   
   
       Map.Entry entry = (Map.Entry) it.next();   
        
          String key = (String)entry.getKey();   
   
          String value = (String)entry.getValue();   
         
          System.out.println("key="+key+",value="+value);
     }



方法2:

Set set = map.keySet();
  
  Iterator iterator = set.iterator();
  
  while(iterator.hasNext()){
   String key = (String) iterator.next();          //获取键
   String value = (String)map.get(key);            //通过键获取值
   
   System.out.println("key="+key+",value="+value);
  }



方法3:

Map map = new HashMap();

map.put("getParoduct","");

for (Iterator<String> it = map.keySet().iterator(); it.hasNext();) {
   
String key = (String) it.next();           //获取Map中的键
   
String value = (String)map.get(key);    //通过键获取值
   
System.out.println("键="+ key +" ,值=" +value);
   
}


===================================================================

一个Map对象中封装了List容器,然后在List容器列表中又封装了map对象:

Map map = new HashMap();

map.put("month","201012");
map.put("custName","杨荣");
map.put("requestId","20101210091213");

Map map2 = new HashMap();

map2.put("productNo","18979177626");
map2.put("payId","162414695");
map2.put("cityCode","0791");

Map map3 = new HashMap();


map3.put("productNo","18979101937");
map3.put("payId","163414690");
map3.put("cityCode","0792");


List list = new ArrayList();

list.add(map2);                //把Map对象装到List容器中
list.add(map3);

map.put("rechargeList", list);  //再把List放到map对象中


2.怎么进行取值:


List list = new ArrayList();

list = (List)map.get("rechargeList");           //map对象是上面中设置的对象


for(int i=0;i <list.size();i++){

Map map2 = (Map)list.get(i);            //转为Map对象

String productNo = map2.get("productNo").toString();
String payId = map2.get("payId").toString();
String cityCode = map2.get("cityCode").toString();

}




================================================================================

注意:


【在一个List对象中存的是一个Map对象,且MaP对象中的键是string类型,


   值又是一个Map对象类型】


解析:

//List对象中封装Map对象,且Map对象中的值又是Map对象
List<Map> list = new ArrayList<Map>();
   
Map map = new HashMap();
   
map.put("lanCode", "0791");
   
map.put("productNo", "18979110001");
   
Map map2 = new HashMap();
   
map2.put("yangrong", map);        //这个Map对象中的值又是一个Map对象
   
list.add(map2);                    //这里又把Map对象放到List中
   
   
List<Map> list2 = (List)list;       //这里我先用一个List来接做为例子讲
   
//采用增强for循环
for (Map<String, Map> ee : list2) {
   
//判断ee这个Map对象中是否包含了yangrong这个键   
if(ee.containsKey("yangrong")) {
     
     //解析
      Map map3 = (Map) ee.get("yangrong");          //根据键是yangrong的去获取值,且值是要转换为一个Map对象
     
       for (Iterator<String> it = map3.keySet().iterator(); it.hasNext();) {
      
  String keys = (String) it.next();           //获取键为yangrong对应的值的Map对象中的键
         
  System.out.println("Map对象中值对应Map的keys="+keys +",map的值="+map3.get(keys));
      
      
       }
        }
   
}


==============================================================================================

4:拿到List对象中封装的Map对象的值:

List list = NewCRM_Util.getMapXml(outXml);                    //getMapXml()返回的是List列表

for(int i = 0; i < list.size(); i++) {
      
  Map map = (Map)list.get(i);
      
  System.out.println("resultCode=:"+map.get("resultCode").toString);                       //resultCode表示Map对象的键
      
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2