繁体   English   中英

迭代包含另一个的LinkedHashMap

[英]Iterating a LinkedHashMap which contains another one

我有一个LinkedHashMap ,其中包含另一个LinkedHashMap ,如下所示:

LinkedHashMap<String,LinkedHashMap<String,String>> containerMap = new LinkedHashMap<String,LinkedHashMap<String,String>>();

我想分别从容器Map中提取值吗? 我的意思是对于容器映射的每个键,我都有一个LinkedHashMap我想用它显示在我的JSP的下拉列表中

有任何想法吗?

我假设您需要基于容器映射的多个下拉列表。 如果是这样,从您sevlet设置地图请求对象作为request.setAttribute("containerMap", containerMap)和使用嵌套forEach循环JSTL在JSP

 <c:forEach items="${containerMap}" var="containerEntry" >
    <select name="${containerEntry.key}" id="${containerEntry.key}">
    <c:forEach items="${containerEntry.value}" var="innerEntry">
        <option value="${innerEntry.key}">
            <c:out value="${innerEntry.value}" />
        </option>
    </c:forEach>
</c:forEach>
LinkedHashMap<String,LinkedHashMap<String,String>> containerMap = new LinkedHashMap<String,LinkedHashMap<String,String>>();

我省略了类型(假设您至少使用Java 7)

LinkedHashMap<String, String> lhMap1 = new LinkedHashMap<>();
lhMap1.put("a", "b");
LinkedHashMap<String, String> lhMap2 = new LinkedHashMap<>();

containerMap.put("1", lhMap1);
containerMap.put("2", lhMap2);

然后在您的容器上可以调用get()

containerMap.get("1"); // will give you lhMap1
containerMap.get("1").get("a"); // will return 'b'

同样,keySet()和values()很有用。

containerMap.keySet(); // will give you a Set<String>
containerMap.values(); // will give you a Collection<LinkedHashMap<String, String>>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM