(JAVA)使用map 对list 进行去重复

业务场景1: 现在有一个list 的集合 ,需要根据list 里面的主键id 作为参考去掉重复的列

使用map 去重复,map<key,value> 存储方式,其中key不能为重复列

List<CustInfo> custinfoList = list(一个集合);
Map<Long ,CustInfo> map = new HashMap<Long ,CustInfo>();
for(int i= 0;i<custinfoList.size();i++){    
     CustInfo custinfo = custinfoList.get(i);
     map.put(custinfo.getId(),custinfo);
}

业务场景2:现有一个String 字符串contact=[{"linkmanname":"小明","linkmobilenumber":"1234567","linkposition":"经理"},{"linkmanname":"小红","linkmobilenumber":"1234567","linkposition":"主管"},{"linkmanname":"小蓝","linkmobilenumber":"1234567","linkposition":"主管"}]参数 要求联系人手机号去重

public String addSeeLog(Map<String, String> formMap) {
        String message = "";
        if (null != formMap.get("contact")) {
            message += checkContact(formMap.get("contact"), message);
        }
    if (StringUtils.isNotBlank(message)) {
            throw new BizException(CrmErrorCode.INPUT_PARAMETER_IS_ERROR, message);
        }
 }
 /** 校验*/
 private String checkContact(String contact, String message) {
        Type contactType = new TypeToken<List<Map<String, String>>>() {
        }.getType();
        List<Map<String, String>> contactList = JsonUtils.GSON.fromJson(contact, contactType);
        Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
//联系人职称,联系人姓名,联系人手机号不可为空
        for (Map<String, String> contactParam : contactList) {
            message += StringUtils.isNotBlank(contactParam.get("linkposition"), "联系人职称");
            message += StringUtils.isNotBlank(contactParam.get("linkmanname"), "联系人姓名");
            message += StringUtils.isNotBlank(contactParam.get("linkmobilenumber"), "联系人手机号");
        }
        //联系人手机号去重
        for (int i = 0; i < contactList.size(); i++) {
            Map<String, String> map0 = contactList.get(i);
            map.put(map0.get("linkmobilenumber"), map0);
            message = "联系人手机号(" + map0.get("linkmobilenumber") + ")重复!";
        }
        return message;

  }

业务场景3【hashset去重】现有一个String 字符串contact=[{"linkmanname":"小明","linkmobilenumber":"1234567","linkposition":"经理"},{"linkmanname":"小红","linkmobilenumber":"1234567","linkposition":"主管"},{"linkmanname":"小蓝","linkmobilenumber":"1234567","linkposition":"主管"}]参数 要求联系人手机号去重

public String addSeeLog(Map<String, String> formMap) {
        String message = "";
        if (null != formMap.get("contact")) {
            message += checkContact(formMap.get("contact"), message);
        }
    if (StringUtils.isNotBlank(message)) {
            throw new BizException(CrmErrorCode.INPUT_PARAMETER_IS_ERROR, message);
        }
 }
 
 /** 校验*/
 private String checkContact(String contact, String message) {
        转换成list map
        Type contactType = new TypeToken<List<Map<String, String>>>() {
        }.getType();
        List<Map<String, String>> contactList = JsonUtils.GSON.fromJson(contact, contactType);
//new一个hashset
        HashSet<String> set = new HashSet<String>();
        for (Map<String, String> contactParam : contactList) {
            message += StringUtils.isNotBlank(contactParam.get("linkposition"), "联系人职称");
            message += StringUtils.isNotBlank(contactParam.get("linkmanname"), "联系人姓名");
            message += StringUtils.isNotBlank(contactParam.get("linkmobilenumber"), "联系人手机号");
            //联系人手机号去重
            if (!set.add(contactParam.get("linkmobilenumber"))) {
                message = "联系人手机号(" + contactParam.get("linkmobilenumber") + ")重复!";
            }
        }
        return message;
  }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值