不同方式遍历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]