java 容器大致可以分为以下三类:
Set 、 List 、Map的区别:
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。
set 和list 都支持iterator() 方法,改方法返回一个迭代子,使用该迭代子即可逐一访问conllection中的每一个元素。典型的用法如下:
Iterator it = collection.iterator(); // 获得一个迭代子 while(it.hasNext()) { Object obj = it.next(); // 得到下一个元素 }
添加数据使用put(key, value),取出数据使用get(key),这两个基本操作的时间开销为常数。
网上商城中Map应用在添加购物车的功能中,代码如下:
前台提交from表单,把pid(商品id)传到Action中
<form id="cartForm" action="${ pageContext.request.contextPath }/cart_addCart.action" method="post" > <input type="hidden" name="pid" value="<s:property value="model.pid"/>"/> <div class="action"> <dl class="quantity"> <dt>购买数量:</dt> <dd> <input id="count" name="count" value="1" maxlength="4" onpaste="return false;" type="text"/> </dd> <dd> 件 </dd> </dl> <div class="buy"> <input id="addCart" class="addCart" value="加入购物车" type="button" onclick="saveCart()"/> </div> </div> </form>
//将购物项添加到购物车:执行的方法 public String addCart() { //封装一个CartItem对象 CartItem cartItem = new CartItem(); //设置数量 cartItem.setCount(count); //根据pid进行查询商品 Product product = productService.findBypid(pid); //设置商品: cartItem.setProduct(product); //将购物项添加到购物车 //购物车应该存在session中 Cart cart = getCart(); cart.addCart(cartItem); return "addCart"; }
private Map<Integer, CartItem> map = new LinkedHashMap<Integer, CartItem>();
public void addCart(CartItem cartItem) { //判断物品是否已在购物项 /* * *如果存在 * *数量增加 * *总计=总计+购物项小计 * *如果不存在 * *向map中添加购物项 * *总计=总计+购物项小计 */ //获得商品id Integer pid = cartItem.getProduct().getPid(); //判断购物车中是否已存在改购物项 if(map.containsKey(pid)) { //存在 CartItem _cartItem = map.get(pid); //获得购物车中原来的购物项 _cartItem.setCount(_cartItem.getCount()+cartItem.getCount()); }else { //不存在 map.put(pid, cartItem); } //设置总计的值 total +=cartItem.getSubtotal(); }
<s:iterator var="cartItem" value="#session.cart.cartItems"> <tr> <td width="60"><input type="hidden" name="id" value="22"> <img src="${pageContext.request.contextPath}/<s:property value="#cartItem.product.image"/>"> </td> <td> <a target="_blank"><s:property value="#cartItem.product.pname" /></a> </td> <td>¥<s:property value="#cartItem.product.shop_price" /> </td> <td class="quantity" width="60"><s:property value="#cartItem.count" /></td> <td width="140"><span class="subtotal">¥<s:property value="#cartItem.subtotal" /> </span> </td> <td><a href="${ pageContext.request.contextPath }/cart_removeCart.action?pid=<s:property value="#cartItem.product.pid"/>" class="delete">删除</a></td> </tr> </s:iterator>