请选择 进入手机版 | 继续访问电脑版
  • 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-9 06:48:11 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

所以我有这个 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap