OGeek|极客世界-中国程序员成长平台

标题: java - 遍历对象的arraylist并从重复对象中获取最大数量值 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-9 06:48
标题: java - 遍历对象的arraylist并从重复对象中获取最大数量值

所以我有这个 Product 对象的 ArrayList。我正在做的是单击 + 按钮,我正在制作 Product 对象并从 ui 设置所有属性;包括“数量”并将此对象添加到 ArrayList。现在,当我通过单击 + 按钮添加单个对象时,我得到了具有所有相同属性的重复产品对象,当然,除了“数量”计数。如果我添加一个数量为 4 的产品,我会在 arraylist 中获得 4 个 Product 对象,它们的数量分别为 1、2、3 和 4。我只想在集合中拥有最大数量的 Product 对象。我已经使用 Comparator 来解决这个问题,但我在这里做错了。请帮助找出我做错了什么。谢谢。这是从 fragment 中排除 getter 和 setter 的 Product 模型。

产品:

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 比较 Product 的两个或多个(根据数量计数)对象是:

Collections.sort(mProductsToBeSent, new Comparator<roducts>() {
                @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 是我必须作为 Json 发送的 ArrayList,但由于存在重复,这不会。我正在比较同一产品的两个后续对象的“代码”属性,如果为真,那么我正在比较“数量”。如果这是真的,那么我将从列表中删除数量较少的对象。但我没有得到想要的输出。

我现在得到的输出:

[
Products{Aliasflag='0', Code ='BMA10K', Description=abc, Price=270.0, Quantity=1, Taxamount=0, Units='BAGS'},
Products{Aliasflag='0', Code ='BMA10K', Description=def, Price=270.0, Quantity=2, Taxamount=0, Units='BAGS'},
Products{Aliasflag='0', Code ='BMA10K', Description=ghi, Price=270.0, Quantity=3, Taxamount=0, Units='BAGS'},
Products{Aliasflag='0', Code ='BMA10K', Description=jkl, Price=270.0, Quantity=4, Taxamount=0, Units='BAGS'}
]

如您所见,我正在尝试删除要删除的前三个对象,并仅保留数组列表中具有最大数量的对象;这是第四个对象——在这种情况下。

期望的输出:

[
Products{Aliasflag='0', Code ='BMA10K', Description=jkl, Price=270.0, Quantity=4, Taxamount=0, Units='BAGS'}
]



Best Answer-推荐答案


执行此操作的通常方法不是将具有另一个数量值的不同产品添加到您的列表中,而是将产品从列表中取出并更新其数量。

写成答案是因为我不能只发表评论,我认为它会对你有所帮助。

关于java - 遍历对象的arraylist并从重复对象中获取最大数量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45811547/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://www.ogeek.cn/) Powered by Discuz! X3.4