Servlets 如何检索hashmap中存储的单个数组值?

Servlets 如何检索hashmap中存储的单个数组值?,servlets,arraylist,Servlets,Arraylist,我试图使用Javaservlet编写一个购物车应用程序,但在尝试检索要在html页面中显示的单个项目时遇到了问题 以下是购物车行项目的片段: public class Item { private int id; private String name; private final int qty; private final double price; private final String description; //constructor public

我试图使用Javaservlet编写一个购物车应用程序,但在尝试检索要在html页面中显示的单个项目时遇到了问题

以下是购物车行项目的片段:

public class Item
 {
  private int  id;
  private String name;
  private final int qty;
  private final double price;
  private final String description;

  //constructor
  public Item(int ident, String n, int q, double p, String desc)
       {
        this.id = ident;
        this.name = n;
        this.qty = q;
        this.price = p;
        this.description = desc;
       }
 }
以下是主购物车类的片段:

//main cart
public class Cart
   {
    HashMap<String, Item> cartItems;
    public Cart()
       {
        cartItems = new Item();
       }
    public HashMap getCartItems()
       {
        return cartItems;
       }
    public void addToCart(String itemId, String itemName, int qty, double price, String desc)
       {
        Item product = new Item(itemId, itemName, qty, price, desc);
        cartItems.put(itemId, product);
       }
    public void deleteFromCart(String itemId)
       {
        cartItems.remove(itemId);
       }
  }
//主购物车
公共类购物车
{
HashMap项目;
公共购物车()
{
cartItems=新项目();
}
公共HashMap getCartItems()
{
归还物品;
}
public void addToCart(String itemId、String itemName、整数数量、双倍价格、String desc)
{
项目产品=新项目(项目ID、项目名称、数量、价格、描述);
cartItems.put(itemId,product);
}
公共void deleteFromCart(字符串itemId)
{
cartItems.remove(itemId);
}
}
我不确定使用hashmap是否是一个好的选择,但ArrayList可能是一个更好的选择。无论哪种方式,我都被困在如何通过hashmap/arraylist迭代和检索单个项上

以下是实现购物车的Servlet代码片段:

String action = request.getParameter("action");
HttpSession session = request.getSession();
Cart shoppingCart;
shoppingCart = (Cart) session.getAttribute("cart");
if (shoppingCart == null)
   {
    shoppingCart = new Cart();
    session.setAttribute("cart", shoppingCart);
   }
switch (action)
     {
      case "add":
           shoppingCart.addToCart(id, name, qty, price, desc);
           session.setAttribute("cart", shoppingCart);
      break;
      case "delete":
           shoppingCart.deleteFromCart(id);
           session.setAttribute("cart", shoppingCart);
           shoppingCart = (Cart) session.getAttribute("cart");
      break;
     }
HashMap<String, Item> items = shoppingCart.getCartItems();
if (items.size() > 0)
   {
    //cart is not empty ... iterate over the array and display to user
    out.println("<!DOCTYPE html>");
    out.println("<html>");
    out.println("<head>");
    out.println("<title>Shopping Cart</title>");
    ....
    ....
   }
String action=request.getParameter(“action”);
HttpSession session=request.getSession();
购物车;
shoppingCart=(购物车)会话.getAttribute(“购物车”);
if(shoppingCart==null)
{
shoppingCart=新购物车();
session.setAttribute(“购物车”,shoppingCart);
}
开关(动作)
{
案例“添加”:
shoppingCart.addToCart(id、名称、数量、价格、描述);
session.setAttribute(“购物车”,shoppingCart);
打破
案例“删除”:
shoppingCart.deleteFromCart(id);
session.setAttribute(“购物车”,shoppingCart);
shoppingCart=(购物车)会话.getAttribute(“购物车”);
打破
}
HashMap items=shoppingCart.getCartItems();
如果(items.size()>0)
{
//购物车不是空的…迭代数组并显示给用户
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“购物车”);
....
....
}

我真正想要的是能够引用Item对象的各个项。关于如何做到这一点,有什么建议吗?或者对如何编写更好更简单的购物车有什么建议?我当然希望能够引用对象的各个项目,以便方便地操作它们。提前感谢。

1。将地图的定义更改为
map
,而不是
map
。2.用谷歌搜索“购物车模式”来检查购物车的一些好的设计建议。可能重复(Item:items.values()){out.println(Item.getName();}。阅读收藏教程。将地图的定义更改为
map
,而不是
map
。2.用谷歌搜索“购物车模式”来检查购物车的一些好的设计建议。可能重复(Item:items.values()){out.println(Item.getName();}。阅读“收藏”教程。