我已经创建了一个ArrayList类型的CartItem,基本上它将所有CartItems存储在一个列表中。

现在,一旦添加了CartItem,而不是再次添加相同的CartItem,它将增加其数量一,而不是在列表中再次添加元素。

public ArrayList<CartItem> Items = new ArrayList<CartItem>();
public void AddItem(int productId)
{

    CartItem newItem = new CartItem(productId);

    if (Items.equals(newItem))
    {
        System.out.println("equal");
        for (CartItem item:Items)
        {
            if (item.Equals(newItem))
            {

                item.Quantity++;
                return;
            }
       }
   }
    else
   {
        newItem.Quantity = 1;
        Items.add(newItem);
   }
}


cartItem构造函数如下

公共CartItem(int productId)
    {

    this.ProductId = productId;
    this.prod = new Product(productId);
    this.Quantity =1;
}


与其展示,不如书本,3
其显示书籍1,书籍1,书籍1

CartItem.Equals(Object)函数

public boolean Equals(CartItem item)
    {
      if(item.prod.Id == this.prod.Id)
      {
           return true;
      }
      return false;
     }

最佳答案

您的课程ShoppingCart应该是这样的:

   public ShoppingCart{

        ArrayList<CartItem> Items = new ArrayList<CartItem>();

        public void AddItem(int productId)
        {
        CartItem newItem = new CartItem(productId);


            for (CartItem item:Items)
            {
                  if (item.Equal(newItem))
                  {
                    item.Quantity++;
                    return;
            }
          }


            newItem.Quantity = 1;
            Items.add(newItem);

        }
  }

10-02 09:26