我有一个子类BetterBasket
可以访问父类(super class) Basket
还有一个ArrayList<Product>
。我的方法add
在BetterBasket
应该搜索 ArrayList
如果存在相同类型的对象,则必须将值添加到已存在的对象中,如果没有,则必须将对象添加到 ArrayList
中。到目前为止我的代码如下所示:
@Override
public boolean add( Product pr )
{
super.add(pr);
double x = pr.getPrice();
for (int i=0; i < super.size(); i++) {
if (super.get(i).equals(pr)) {
double y = super.get(i).getPrice();
super.get(i).setPrice(y + x);
}
}
// Collections.sort to sort ArrayList from highest to lowest product number
(I have removed the code for this)
return true;
}
}
当我运行它时,该对象被添加到 ArrayList
但价格也翻倍。我尝试了许多不同的变体,但没有成功。
任何提示或建议将不胜感激。
编辑:
if (!super.contains(pr)) {
super.add(pr);
} else {
for (int i=0; i < super.size(); i++) {
if (super.get(i).equals(pr)) {
double y = super.get(i).getPrice();
super.get(i).setPrice(y + x);
}
}
}
现在,即使有双对象,它也会将每个对象添加到数组列表中。
最佳答案
super.add(pr) 在做什么?我猜这只是将元素添加到 ArrayList 中。
通过将其添加到数组列表中,它也复制了价格。之后,您迭代数组列表,找到刚刚添加的元素并添加价格 - 这会导致价格加倍。
关于java - 在 ArrayList 中搜索相同的对象并合并价格值而不是添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47907122/