简单算法:实现姓名的去重。

简单算法:实现姓名的去重。

这里我们假设忽略大小写情况下是一样的。
第一种方案:利用HashMap进行去重。HashMap的存储特点是:无序不可重复,利用该特点我们可以将目标中的字符串进行遍历,只要是我们HashMap集合中没有的,我们就将他放进去,之后添加到目标集合中,这样便实现了姓名的去重。
代码如下:

  public List<String> nameDeduplication1(String[] names) {
        // 我们定义一个List集合用于收集结果并返回。
        List<String> result = new ArrayList<String>();
        //创建HashMap集合
        HashMap<String,Integer> mp = new HashMap<String,Integer>();
        for(int i = 0;i < names.length;i++){ //遍历姓名数组
            String str = names[i].toLowerCase(); // 全部转换为小写
            if(!mp.containsKey(str)){   //如果HashMap集合中不包含该姓名 就将该姓名放入集合中,并添加到我们要的结果集合中!
                mp.put(str,1);
                result.add(str);
            }
        }
        return result;
    }

看到这里,我想大家应该自己也有了思路,那集合那么多,我能不能用其他的集合呢?答案当然是肯定的,这样有相同特性的集合–Set便也能发挥如此作用,具体如何实现,大家可以自己写一写,写完可以参考如下代码。

public List<String> nameDeduplication2(String[] names) {
        // 做简单判断,如果为传入字符串没有重复名字,那我们把他返回
        List<String> list = new ArrayList<>();
        if(names == null || names.length == 0){
            return list;
        }
        Set<String> set = new HashSet<>();
        for(int i = 0; i < names.length; i++){
            String str = names[i].toLowerCase();
            if(set.contains(str)){
                continue;
            }else{
                set.add(str);
                list.add(str);
            }
        }
        return list;
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值