闲来没事写个小知识:
直接上例子:
假如有一个类:User(用户)
一个User有好多属性简单举例几个:id, name(姓名), address(地址).....
另一个类:Car(小车),其有几个简单属性: id, color(颜色), producers(厂家).......
假如有这样的情景,一个人拥有好几辆Car。
现在要求将一群人显示到页面,每个人的车也显示到页面。
Map<User, List<Car>> userInfoMap=new HashMap<User, List<Car>>(); //注意此处Map中存储的结构
...................例如有3个User对象:user1, user2,user3
...................例如user1拥有3两车:u1Car1, u1Car2,u1Car3, 其它两个用户也类似
....................List<Car> u1CarList=new ArrayList<Car>();
....................u1CarList.add(u1Car1);
....................u1CarList.add(u1Car2);
....................u1CarList.add(u1Car3);
....................其它类似
userInfoMap.put(user1, u1CarList);
userInfoMap.put(user2, u2CarList);
userInfoMap.put(user3, u3CarList);
request.setAttribute("userInfoMap",userInfoMap); //放到request中
------------------下边就jsp页面如何取出
<c:if test="${!empty userInfoMap}">
<c:forEach items="${userInfoMap}" var="obj">
${obj.key.name}<br/> //注意此处的写法key
${obj.key.address}<br/>
<c:if test="${!empty obj.value}">
<c:forEach items="${obj.value}" var="carObj"> //注意此处的写法value,也是第二次要循环的List
${carObj.color}<br/>
${carObj.producers}<br/>
<c:forEach>
</c:if>
</c:forEach>
</c:if>
第一层循环式取key值,即每个User对象,然后就可以取该对象的属性值了。
第二层循环是取key对应的value,此处value是一个集合对象,集合中的每个元素是一个Car对象,同样就可以取出Car的属性了。