keyset与entryset的比较:
关于Java集合的Map集合的遍历
普通Java代码:
map.keySet();键集合
map.values();值集合
map.entrySet();键值集合
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
Map map=new HashMap();
map.put("a","1");
map.put("b","2");
map.put("c","3");
//for循环方式——遍历键,通过键取值
//map.keySet();键集合
//map.values();值集合
//map.entrySet();键值集合
//最常用的方法
Set set = map.keySet();
for(Object key : set){
System.out.println("键:" + key +" 值:" + map.get(key));
}
System.out.println("--------------");
it.hasNext()分为两个:it 和 .hasNext();
1. it:这里应该是上文定义了一个可迭代对象
2. .hasNext(): 检查序列中是否还有元素
3. 其他Iterator用法。
1)使用方法 iterator()要求容器返回一个 Iterator。第一次调用Iterator 的next()方法时,它返回序列的第一个元素。
2)使用next()获得序列中的下一个元素。
3)使用hasNext()检查序列中是否还有元素。
4)使用remove()将上一次返回的元素从迭代器中移除。
//Iterator方式——遍历键集合
Iterator it = map.keySet().iterator();
while(it.hasNext()){
System.out.println("键:" + it.next());
}
System.out.println("--------------");
Iterator it2 = map.entrySet().iterator();
while(it2.hasNext()){
System.out.println("键:" + it2.next());
}
}
}
结果:
键:b? 值:2
键:c? 值:3
键:a? 值:1
--------------
键:b
键:c
键:a
--------------
键:b=2
键:c=3
键:a=1
在页面上使用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>
使用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>