迭代包含另一个的LinkedHashMap

时间:2014-07-18 13:16:23

标签: java linkedhashmap

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

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

我想单独从容器Map中提取值?我的意思是对于容器映射的每个键,我有LinkedHashMap我想用它来显示在我的JSP上的下拉列表中

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我假设你需要根据容器图进行多次下拉。如果是这样,你的sevlet将map设置为request.setAttribute("containerMap", containerMap)请求对象,并在jsp中使用jstl的嵌套forEach循环

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

答案 1 :(得分:0)

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