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: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终止吗?离开大楼了吗