Java获取集合中重复的元素

需求

我们在下订单的时候,收件人的地址信息可能会有多个,现在的需求是把一些重复的地址信息删除掉。

姓名,电话,省,市,区,详细地址完全相同则认为是同一个收件人。

分析

地址是存在数据库的表里的,所以我们需要先查出每个收件人下重复的地址,再做数据库的删除操作。可以通过使用 HashSet 的 add 方法将地址列表中的地址一个一个的添加到 HashSet 中,add 方法有个返回值,类型为 Boolean,值为 true 表示添加成功,false 表示当前元素已经重复了,此时,可以将这个已经重复的元素添加到另一个集合中,即可完成对重复元素的收集。最后,再通过数据库操作把这些重复的元素删除即可。

实现

地址实体类:

import lombok.Data;

import java.util.Objects;

// 地址实体类
@Data
public class ErpReceiver {
   

    private Integer id;

    // 收件人名
    private String name;

    // 手机号码
    private String phone;

    // 省
    private String province;

    // 市
    private String city;

    // 区
    private String country;

    // 详细地址
    private String detailAddr;

    // 姓名,电话,省,市,区,详细地址相同则视为同一个地址
    @Override
    public boolean equals(Object o) {
   
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        ErpReceiver that = (ErpReceiver) o;
        return Objects.equals(name, that.name) &&
                Objects.equals(phone, that.phone) &&
                Objects.equals(province, that.province) &&
                Objects.equals(city, that.city) &&
                Objects.equals(country, that.country) &&
                Objects.equals(detailAddr, that.detailAddr);
    }

    @Override
    public int hashCode() {
   
        return Objects.hash(name, phone,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值