Java中的ArrayList
我要做的是检查ArrayList中是否存在相同的对象,并将其数量更新为1。但是,代码将再次将同一项添加到列表中,并将其数量设置为1 一个项目就是一个类Java中的ArrayList,java,jsp,arraylist,shopping-cart,Java,Jsp,Arraylist,Shopping Cart,我要做的是检查ArrayList中是否存在相同的对象,并将其数量更新为1。但是,代码将再次将同一项添加到列表中,并将其数量设置为1 一个项目就是一个类 public class Item{ public int Id; public String Description; public int Price; public Item(int id) { this.Id = id; switch (id) { case 1:
public class Item{
public int Id;
public String Description;
public int Price;
public Item(int id)
{
this.Id = id;
switch (id) {
case 1:
this.Price = 19.95f;
this.Description = "Shoes";
break;
case 2:
this.Price = 9.95f;
this.Description = "Shirt";
break;
case 3:
this.Price = 14.95f;
this.Description = "Pants";
break;
}
}
创建CartItem类来保存该项目及其数量
public class CartItem{
public Item itm;
public int Quantity;
public CartItem(int itemId)
{
this.itm = new Item(itemId)
this.Quantity=1;
}
public boolean Equal(CartItem item)
{
final CartItem a = new CartItem(item.Id);
if (this.itm.Id != a.ProductId)
{
return false;
}
return true;
}
}
ShoppingCart类,它存储CartItems列表,并包含将项目添加到列表中的方法
public ShoppingCart{
ArrayList<CartItem> Items = new ArrayList<CartItem>();
public void AddItem(int productId)
{
CartItem newItem = new CartItem(productId);
if (Items.equals(newItem))
{
for (CartItem item:Items)
{
if (item.Equal(newItem))
{
item.Quantity++;
return;
}
}
else
{
newItem.Quantity = 1;
Items.add(newItem);
}
}
}
公共购物车{
ArrayList Items=新建ArrayList();
公共无效附加项(int productId)
{
CartItem newItem=新的CartItem(productId);
if(Items.equals(newItem))
{
用于(CartItem:Items)
{
如果(项目相等(新项目))
{
项目.数量++;
返回;
}
}
其他的
{
newItem.Quantity=1;
项目。添加(新项目);
}
}
}
当我向购物车添加项目时,它会将相同的项目重复到列表中,而不是更新其数量。整个问题是,我的代码无法检查ShoppingCart类的CartItem列表中是否存在相同的项目
书籍,1
书籍,1
书籍,1
而不是期望的输出
书籍,3