我已经创建了一个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);
}
}