如何使用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}实际上是a 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();

}

以上是 如何使用JSTL在HashMap中迭代ArrayList? 的全部内容, 来源链接: utcz.com/qa/413652.html

回到顶部