当前位置: 首页 > 知识库问答 >
问题:

遍历对象的arraylist并从重复对象中获取最大数量值

施英哲
2023-03-14

所以我有了这个产品对象的ArrayList。我所做的是在点击+按钮,我正在制作一个产品的对象,并从UI设置所有的属性;包括'Quantity'并将此对象添加到ArrayList中。现在,当我在单击+按钮时添加一个对象时,我得到了具有所有相同属性的重复产品对象,当然,除了“数量”计数。如果我添加一个数量为4的产品,我会在arraylist中得到4个不同数量为1、2、3和4的产品对象。我只想有最大数量的产品对象内的集合。对于这个问题,我已经使用了比较器,但我在这里做错了什么。请帮忙找出我做错了什么。谢了。下面是从Snippet中排除getter和setter的产品模型。

产品:

private String category;
private String code;
private String description;
private String units;
private String weight;
private Integer tax;
private String pieces;
private Integer aliasFlag;
private Double price;
private Integer quantity;
private Integer taxAmount;
private Double totalAmount;

到目前为止,我使用Comparator比较产品的两个或多个(根据数量计数)对象的方法是:

Collections.sort(mProductsToBeSent, new Comparator<Products>() {
                @Override
                public int compare(Products ob1, Products ob2) {
                    if (ob1.getCode().equals(ob2.getCode())) {
                        if (ob1.getQuantity()<ob2.getQuantity()){
                            mProductsToBeSent.remove(ob1);
                        }
                    }
                    return 0;
                }
            });

mProductToBeSent是我的ArrayList,我将不得不作为Json发送,但是由于存在重复,这是不行的。我在比较同一产品的两个后续对象的“代码”属性,如果是真的,那么我在比较“数量”。如果是真的,那么我将从列表中删除较小的数量对象。但我没有得到期望的输出。

我现在得到的输出是:

[
产品{aliasflag='0',代码='BMA10K',描述=ABC,价格=270.0,数量=1,taxamount=0,units='Bags'},
产品{aliasflag='0',代码='BMA10K',描述=def,价格=270.0,数量=2,taxamount=0,units='Bags'},
产品{aliasflag='0',代码='BMA10K',描述=GHI,价格=270.0,数量=3,taxamount=0,units='Bags'},
产品{aliasflag='0',代码='0',代码BMA10K',描述=JKL,价格=270.0,数量=4,税额=0,单位='Bags'}
]

正如您所看到的,我试图删除前三个要删除的对象,并且只保留ArrayList中数量最大的对象;这是第四个对象--在本例中。

期望输出:

[
产品{aliasflag='0',Code='BMA10K',description=JKL,price=270.0,quantity=4,taxamount=0,units='bags'}
]

共有1个答案

宦飞
2023-03-14

通常这样做的方法不是添加一个不同的产品到您的列表中,只有另一个数量值,而是将该产品从列表中取出并更新其数量。

作为答案写,因为我不能只是评论,我认为它会帮助你。

 类似资料:
  • 假设每种颜色总是有一辆车。所以我总是在找一辆车,不多也不少。 如何确保始终有一个对象被找到并返回?

  • 我有这个初始数组,希望根据和提取重复航班 我写了这个,但我只能得到第一个重复的,看起来不是很漂亮。 有什么建议吗?

  • 问题内容: 使用示例: 假设我有一个课堂电话。我还有另一个上课电话。 类的ArrayList为。 要遍历.. 的Arraylist而不是这样做: 我们可以像这样简单地遍历ArrayList : 现在,我要迭代并打印出所有第3个对象: 现在我的问题是: 与使用常规的for循环不同,我如何使用ArrayList迭代打印出枪支对象列表? 问题答案: 您要遵循与以前相同的模式: 在这种情况下,它将是:

  • 我有super class Person扩展到2个sup class(Employee和Student),在我输入员工信息(姓名、SSN、工资、Gendr)后,我想找到最大工资的员工并键入他的信息,但我不知道如何用对象来做!,如果你可以给我一个提示,我将非常感谢。

  • 我必须得到包含最大值的对象列表。Java8中的比较器max只返回一个对象。 为了做到这一点,我必须流式地显示两次列表: 这个解决方案有效。我想有一个更好的方法来解决这个问题,但我想不出来。