Как выполнить итерации ArrayList в HashMap с помощью JSTL?

У меня есть карта как это,

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

Теперь я должен выполнить итерации этой Карты и затем ArrayList в карте. Как я могу сделать это использование JSTL?

35
задан informatik01 25 June 2013 в 23:47
поделиться

2 ответа

Вы можете использовать jstl тег, чтобы повторить массивы, коллекции и карты.

В случае массивов и коллекций, каждая итерация 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 , который, в свою очередь, имеет Gethkee () и 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>

В вашем конкретном случае $ {intrue.value} на самом деле является списком , таким образом, вам нужно и повторить его, а также:

<%@ 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();
}

Смотрите также:

74
ответ дан 27 November 2019 в 06:44
поделиться
-

Вы пробовали что-то вроде этого?

<c:forEach var='item' items='${map}'>
    <c:forEach var='arrayItem' items='${item.value}' />
      ...
    </c:forEach>
</c:forEach>
6
ответ дан 27 November 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: