Java 如何使用JSTL在HashMap中迭代ArrayList?

Java 如何使用JSTL在HashMap中迭代ArrayList?,java,jsp,map,arraylist,jstl,Java,Jsp,Map,Arraylist,Jstl,我有一张这样的地图 Map<Integer,ArrayList<Object>> myMap = new LinkedHashMap<Integer,ArrayList<Object>>(); Map myMap=newlinkedhashmap(); 现在我必须迭代这个映射,然后迭代映射中的ArrayList。如何使用JSTL实现这一点?您是否尝试过类似的方法 <c:forEach var='item' items='${map}'&g

我有一张这样的地图

Map<Integer,ArrayList<Object>> myMap = new LinkedHashMap<Integer,ArrayList<Object>>();
Map myMap=newlinkedhashmap();

现在我必须迭代这个映射,然后迭代映射中的ArrayList。如何使用JSTL实现这一点?

您是否尝试过类似的方法

<c:forEach var='item' items='${map}'>
    <c:forEach var='arrayItem' items='${item.value}' />
      ...
    </c:forEach>
</c:forEach>

...
您可以使用标记对数组、集合和映射进行迭代

对于数组和集合,每次迭代
var
都会立即给出当前迭代的项


Item=${Item}
对于映射,每次迭代
var
都会给您一个对象,该对象依次具有
getKey()
getValue()
方法


Key=${entry.Key},value=${entry.value}
在您的特定情况下,
${entry.value}
实际上是一个
列表
,因此您还需要对其进行迭代:


Key=${entry.Key},值=
${item}${!loop.last?',':''}

varStatus
仅为方便起见;)

为了更好地理解这里发生的一切,这里有一个简单的Java翻译:

for(条目:map.entrySet()){
out.print(“Key=“+entry.getKey()+”,values=“);
for(Iterator iter=entry.getValue().Iterator();iter.hasNext();){
对象项=iter.next();
out.print(item+(iter.hasNext()?,:);
}
out.println();
}
另见:

您尚未关闭c标签。请尝试此选项

 <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>

Key=${entry.Key},值=
${item}${!loop.last?',':''}


您也可以只在地图上循环。如果您知道关键点,请对地图本身进行估价

<c:forEach var="value" items="${myMap[myObject.someInteger]}">
    ${value}
</c:forEach>

${value}

当然,您可能希望在两个foreach语句之间输出
${item.key}
。我喜欢您使用“${!loop.last?”,”:“}”:您可以在这里找到更多的方法:
${loop.index}
${loop.first}
${loop.last}
在这里最有用。耶!谢谢你的帖子。这与我使用map.value作为列表的案例完全匹配:)应该由Elvis终止吗?离开大楼了吗