JAVA——list对象如何根据对象的多个属性(部分属性)进行去重

背景:

订单实体类order中存在十几个属性,若客户名称、产品名称和联系电话相同则判断为同一订单,需要对list中相同订单进行去重。

解决思路:

利用contains方法进行去重。contains方法使用元素的 equals方法来判断是否相等。在 Java 中,两个对象如果通过 equals 方法比较返回 true,则被视为相等。

具体的做法:

    1、创建一个简化版订单实体类(只包含需要比较去重的属性)。

    2、创建一个新的List对象,用于存放去重后的元素。
    3、遍历原始的List对象,对于每一个元素,使用contains方法判断新List中是否已经存在该元素。
    4、如果新List中不存在该元素,则将该元素添加到新List中。
    5、最后,新List中的元素就是去重后的结果。 示例代码如下:

订单类order:

@Data
public class OrderDTO {
    @ApiModelProperty(value = "订单编号")
    private String orderCode;

    @ApiModelProperty(value = "客户名称")
    private String custName;

    @ApiModelProperty(value = "客户联系电话")
    private String custPhoneNumber;

    @ApiModelProperty(value = "居住地址")
    private String address;

    @ApiModelProperty(value = "产品类型")
    private String productType;

    @ApiModelProperty(value = "产品名称")
    private String productName;

    @ApiModelProperty(value = "推荐人名称")
    private String referEmpName;

    @ApiModelProperty(value = "推荐人手机号")
    private String referEmpPhone;
}

简化版订单实体类smallOrder(只包含用于比较去重的属性):

@Data
public class SmallCrmLoanOrderDTO {
    @ApiModelProperty(value = "客户名称")
    private String custName;

    @ApiModelProperty(value = "联系电话")
    private String phoneNumber;

    @ApiModelProperty(value = "产品名称")
    private String productName;
}

利用contains方法对list去重:

//原始订单对象列表
List<OrderDTO> orderDTOS = new ArrayList<>();
//用于存储去重后的对象
List<SmallOrderDTO> validatedOrderDTOS = new ArrayList<>();
for(OrderDTO dto : orderDTOS ){
    SmallOrderDTO smallOrderDTO = new SmallOrderDTO();
    BeanUtils.copyProperties(dto, smallOrderDTO);
    if (!validatedOrderDTOS.contains(smallOrderDTO)) {
        validatedOrderDTOS.add(smallOrderDTO);
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值