如何使用JSTL在HashMap中迭代ArrayList?
我有这样的地图,
Map<Integer,ArrayList<Object>> myMap = new LinkedHashMap<Integer,ArrayList<Object>>();
现在我必须迭代这个Map,然后迭代地图中的ArrayList。 我怎样才能使用JSTL?
您可以使用JSTL <c:forEach>
标记遍历数组,集合和映射。
在数组和集合的情况下,每一次迭代var
都会立即为您提供当前迭代的项目。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:forEach items="${collectionOrArray}" var="item"> Item = ${item}<br> </c:forEach>
在映射的情况下,每一次迭代var
都会给你一个Map.Entry
对象,它又有getKey()
和getValue()
方法。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:forEach items="${map}" var="entry"> Key = ${entry.key}, value = ${entry.value}<br> </c:forEach>
在你的具体情况下, ${entry.value}
实际上是一个List
,因此你也需要遍历它:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:forEach items="${map}" var="entry"> Key = ${entry.key}, values = <c:forEach items="${entry.value}" var="item" varStatus="loop"> ${item} ${!loop.last ? ', ' : ''} </c:forEach><br> </c:forEach>
varStatus
只是为了方便;)
为了更好地理解这里所发生的一切,下面是一个简单的Java翻译:
for (Entry<String, List<Object>> entry : map.entrySet()) { out.print("Key = " + entry.getKey() + ", values = "); for (Iterator<Object> iter = entry.getValue().iterator(); iter.hasNext();) { Object item = iter.next(); out.print(item + (iter.hasNext() ? ", " : "")); } out.println(); }
也可以看看:
- 如何循环在JSP中的HashMap?
- 在JSP页面中使用MVC和DAO模式在HTML中显示JDBC ResultSet
- 如何在JSTL中循环指定的次数?
你尝试过这样的事情吗?
<c:forEach var='item' items='${map}'> <c:forEach var='arrayItem' items='${item.value}' /> ... </c:forEach> </c:forEach>
你还没有closuresc tag.try这个
<c:forEach items="${logMap}" var="entry"> Key = ${entry.key}, values = <c:forEach items="${entry.value}" var="item" varStatus="loop"> ${item} ${!loop.last ? ', ' : ''} </c:forEach><br> </c:forEach>
如果你知道密钥,你也可以绕过map.value自己
<c:forEach var="value" items="${myMap[myObject.someInteger]}"> ${value} </c:forEach>
- 使arrayList.toArray()返回更具体的types
- 列出<String>到ArrayList <String>转换问题
- 数组与ArrayList的性能
- 如何避免ArrayIndexOutOfBoundsException或IndexOutOfBoundsException?
- 在.Net中,如何将ArrayList转换为强types的通用列表而不使用foreach?
- 将Iterator转换为ArrayList
- ArrayList.clear()和ArrayList.removeAll()有什么区别?
- ArrayList <String>到CharSequence
- 如何使Java ArrayList的深层副本