如何遍历具有LinkedHashMap的ArrayList?

时间:2016-01-14 03:00:40

标签: java jsp servlets arraylist linkedhashmap

我的servlet生成并向jsp发送一个数组。如何实现以下结果:

如果item =" dress",print.out"蓝色连衣裙,尺寸:中等"

Servlet部分:

ArrayList<LinkedHashMap<String, String>> listData = new ArrayList<LinkedHashMap<String, String>>();
LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<String, String>();

linkedHashMap.put("item", "dress");
linkedHashMap.put("desc", "blue dress");
linkedHashMap.put("size", "medium");
listData.add(linkedHashMap);

linkedHashMap = new LinkedHashMap<String, String>();
linkedHashMap.put("item", "t-shirt");
linkedHashMap.put("desc", "white dress");
linkedHashMap.put("size", "small");
listData.add(linkedHashMap);

request.setAttribute("dataList", listData);

JSP部分:

if (request.getAttribute("dataList") != null) {
    ArrayList basicList = (ArrayList) request.getAttribute("dataList");

    for (int i=0; i < basicList.size(); i++) {
        System.out.println(basicList.get(i));
    }
}

结果

{item=dress, desc=blue dress, size=medium}
{item=t-shirt, desc=white dress, size=small}

如何实现以下结果:if item =&#34; dress&#34 ;, print&#34; blue dress,size:medium&#34;

2 个答案:

答案 0 :(得分:1)

如果要在JSP中显示内容,请使用适当的技术,这些是EL和JSTL:

<c:forEach items="${dataList}" var="dress">
    <p>${dress['desc']}, size: ${dress['size']} </p>
</c:forEach>

答案 1 :(得分:1)

你必须使用LinkedHashMap吗?我认为使用ArrayList和一个单独的类具有desc和size作为属性会更容易。这将是班级:

public class Item {
    public String desc;
    public String size;

    public Item (String desc, String size) {
        this.desc = desc;
        this.size = size;
    }
}

我猜你也可以使用enum作为大小(因为它只会是“小”,“中”,“大”等等。)

你的Servlet部分看起来像这样:

ArrayList<Item> listData = new ArrayList<Item>();
listData.add(new Item("blue dress", "medium"));
listData.add(new Item("white dress", "small"));
request.setAttribute("dataList", dataList);

你的JSP部分是这样的:

if (request.getAttribute("dataList") != null) {
    ArrayList basicList = (ArrayList) request.getAttribute("dataList");

    Item myItem = null;
    for (int i=0; i < basicList.size(); i++) {
        myItem = (Item)basicList.get(i)
        System.out.println(myItem.desc + ", size: " + myItem.size);
    }
}

我没有尝试代码,但我认为这应该有效。