用hashmap如何实现对购物车中商品名字相同的商品进行数量的增加?

解决方案 »

  1.   

    class 商品{}
    class 商品类别{
       数量
        商品
    }class 购物车{
       private 商品类别
    }
      

  2.   

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;import com.forth.restrantManager.entity.FoodInfoEntity;
    /**
     * 购物车
     * 
     * @author linkang
     * 
     */
    public class ShopCarUtil {
    int total;// 购物车中的物品总量
    Map foodMap = new HashMap();
    float totalPrice=0.0f;


    public float getTotalPrice() {
    float price = 0f;
    Iterator iterator = this.getFoodMap().values().iterator();
    FoodItem item = null;
    while (iterator.hasNext()) {
    item = (FoodItem) iterator.next();
    price += item.getQuitity() * item.getEntity().getFoodPrice();
    }
    return price;
    } public void setTotalPrice(float totalPrice) {
    this.totalPrice = totalPrice;
    } // 第一次购买和重复购买相同的食物
    public void AddFood(FoodInfoEntity entity) {
    FoodItem foodItem = (FoodItem) foodMap.get(entity.getId() + "");
    if (foodItem == null) {
    // 第一次购买
    foodMap.put(entity.getId() + "", new FoodItem(entity));
    } else {
    foodItem.AddQuitity();
    }
    total++;
    } // 重复购买相同的食物
    public void Add(int id) {
    FoodItem foodItem = (FoodItem) foodMap.get(id + "");
    if (foodItem != null) {
    foodItem.AddQuitity();
    total++;
    }
    } // 减少商品数量
    public void Sub(int id) {
    FoodItem foodItem = (FoodItem) foodMap.get(id + "");
    if (foodItem.getQuitity() == 1) {
    ClearOne(id);
    } else {
    foodItem.SubQuitity();
    total--;
    }
    } // 修改商品数量
    public void UpdateQuitity(int id, int count) {
    FoodItem foodItem = (FoodItem) foodMap.get(id + "");
    if (foodItem != null) {
    int temp = count - foodItem.getQuitity();
    this.total += temp;
    foodItem.setQuitity(count);
    }
    } // 移除一个商品
    public void ClearOne(int id) {
    FoodItem foodItem = (FoodItem) foodMap.get(id + "");
    if (foodItem != null) {
    foodMap.remove(id + "");
    total -= foodItem.getQuitity();
    }
    } // 全部移除商品
    public void ClearAll() {
    if (foodMap != null) {
    foodMap.clear();
    total = 0;
    }
    } // 返回食物总价钱
    public float TotolPirce() {
    float price = 0f;
    Iterator iterator = this.getFoodMap().values().iterator();
    FoodItem item = null;
    while (iterator.hasNext()) {
    item = (FoodItem) iterator.next();
    price += item.getQuitity() * item.getEntity().getFoodPrice();
    }
    return price;
    } public int getTotal() {
    return total;
    } public void setTotal(int total) {
    this.total = total;
    } public Map getFoodMap() {
    return foodMap;
    } public void setFoodMap(Map foodMap) {
    this.foodMap = foodMap;
    } public static void main(String[] args) {
    // System.out.println(new DecimalFormatSymbols(0.00).format(34));//
    // .format(Double.valueOf((5*5.5f));
    // new DecimalFormat(0.00).format(new Double().parseDouble(5*5.5f) )
    }
    }
      

  3.   

    class 购物车{
    private 商品类别
    }在商品类中已近定义了商品类型的属性,所以在购物车不需要定义商品类别的属性,另外,在购物车类中还要定义一个购买商品的数量这个属性。
      

  4.   

    hashmap;
    在添加以个商品时;
    和hashmap里面相应的字段比如Id比较;
    如果存在,进行数量加1;
    不存在,进行添加;
    希望对你有帮助