六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 69|回复: 0

不同方式遍历Map集合

[复制链接]

升级  50%

5

主题

5

主题

5

主题

童生

Rank: 1

积分
25
 楼主| 发表于 2013-1-26 16:40:02 | 显示全部楼层 |阅读模式
Map是一种以键值对的形式存在的集合,其中每个键映射到一个值,几乎所有通用 Map 都使用哈希映射。位于java.util包中。其子类有HashMap,TreeMap。HashMap缺省的情况下是线程非安全的;当多线程访问时可能需要提供同步机制,key和value的值允许为null,键值允许重复,没有顺序。 
 
1、普通Java类遍历

Map map=new HashMap();map.put("a", "1");map.put("b", "2");map.put("c", "3");map.keySet();//键集合map.values();//值集合map.entrySet();//键值集合//遍历键,通过键取值Set set = map.keySet();for (Object key : set) {System.out.println("键:"+key+"  值:"+map.get(key));}//遍历键集合Iterator it=map.keySet().iterator();while(it.hasNext()){System.out.println("键:"+it.next());}//遍历键值集合Iterator it2=map.entrySet().iterator();while(it2.hasNext()){System.out.println(it2.next());} 
2、使用EL表达式遍历Map集合 
 

<%Map map=new HashMap();map.put("a", "1");map.put("b", "2");map.put("c", "3");pageContext.setAttribute("map",map);%><c:forEach items="${map}" var="m">     键:${m.key}      值:${m.value} </c:forEach> 
3、使用EL表达式遍历Map集合(值存放的是对象) 
 

<%    Person p=new Person();    p.setAddress("aa");    p.setName("aa");        Person p2=new Person();    p2.setAddress("bb");    p2.setName("bb"); Person p3=new Person();p3.setAddress("cc");p3.setName("cc");Map map=new HashMap();map.put("a", p);map.put("b", p2);map.put("c", p3);pageContext.setAttribute("map",map);%><c:forEach items="${map}" var="m">     ${m.key}      ${m.value.name} //m.value取得的是对象的内存地址,所以可以直接用m.value.name(name为Person对象的属性)</c:forEach> 
4、使用struts标签<logic:iterate />遍历  
 

<%    List list=new ArrayList();    list.add("aa");    list.add("bb");    list.add("cc");    Map map=new HashMap();    map.put("a", list);    pageContext.setAttribute("map",map);%>     <logic:iterate id="m" name="map">     键:${m.key}     <logic:iterate id="childm" name="m" property="value">内层标签的name对应的是外层标签的id,一定要加上property="value"     值:${childm}     </logic:iterate>    </logic:iterate>
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表