加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用arraylist删除数组中的重复项失败

发布时间:2020-12-15 04:15:41 所属栏目:Java 来源:网络整理
导读:我想通过使用数组列表从数组中删除重复项.代码似乎适用于所有情况,除非String []数组包含三个元素副本.为什么会出现这个问题以及如何解决? Test input - array = {"D22","D22","D22"};Output = D22D22Expected output = D22public static String[] removeDu
我想通过使用数组列表从数组中删除重复项.代码似乎适用于所有情况,除非String []数组包含三个元素副本.为什么会出现这个问题以及如何解决?

Test input - 
array = {"D22","D22","D22"};

Output = 
D22
D22

Expected output = 
D22

public static String[] removeDuplicates(String [] array){
    String [] noDups = null;
    ArrayList<String> copy = new ArrayList<String>();
    String first = "";
    String next = "";

    for(String s: array){
        copy.add(s.trim());//Trimming
    }

    for(int i = 0; i < copy.size(); i++){

        for(int j = i + 1; j < copy.size(); j++){

            first = copy.get(i);
            next = copy.get(j);

            if(first.equals(next)){
                copy.remove(j);
            }

        }


    }

    noDups = copy.toArray(new String[copy.size()]);

    for(String s: noDups){
        System.out.println(s);

    }

    return noDups;
}

解决方法

这是因为当你调用remove时,你的计数器也会增加,导致它跳过一个元素.就像是

if(first.equals(next)){
  copy.remove(j);
  j--;
}

应该解决这个问题

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读