java - 在 ArrayList 中搜索相同的对象并合并价格值而不是添加

标签 java arraylist merge

我有一个子类BetterBasket可以访问父类(super class) Basket还有一个ArrayList<Product> 。我的方法addBetterBasket应该搜索 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/

相关文章:

java - 访问 ArrayList 中的对象类变量 (java)

xml - 使用 P4Merge 合并 XML

java - cxf-xjc 插件 "Must specify xsdOptions"错误

java - 如何在 RESTEasy 客户端框架中设置 HTTP header ?

android - 如何将 JSONArray 转换为 arraylist

java - while 循环中的日历问题

r - 多列合并导致奇怪的排序

svn - 了解 Subversion 存储库中合并冲突的历史记录

java - 如何使用 Android SIP API 向 SIP 服务器注册 SIP 配置文件?

Java、StaX 简单代码但出现解析错误、文件过早结束