659的典藏 发表于 2013-1-26 16:40:02

不同方式遍历Map集合

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>
页: [1]
查看完整版本: 不同方式遍历Map集合