如何使用每个循环在数组中查找重复元素

时间:2019-06-03 07:13:59

标签: java arrays loops

我正在尝试使用for each循环在一个d数组中打印重复的元素。但是我的输出是意外的。谁能帮忙吗?

package Login;

public class DupsArray {

    static int[] a = {1,2,3,3};
    public static void main(String[] args) {
        int length = a.length;
        for(int i=0;i<=length-1;i++) {
            for(int j : a) {
                for(j=1;j<=length-1;j++) {
                    if(a[i]==(a[j]) ) {
                    System.out.println("Found duplicate");
                } else {
                    System.out.println("No duplicates found");
                }
            }
        }
    }
}

结果如下:

  

发现预期的打印结果是重复的。

4 个答案:

答案 0 :(得分:1)

您可以像这样使用Sets

  Integer[] a = {1, 2, 3, 3, 5, 5, 7, 8, 7};
  Set<Integer> duplicatesSet = new HashSet<>();
  Set<Integer> helperSet = new HashSet<>();

  for (Integer element : a) {
     if (!helperSet.add(element)) { // NOTE*
        System.out.println("Duplicate found : " + element);
        duplicatesSet.add(element);
     }     
  }

然后,您可以对重复项进行任何操作

for(Integer el : duplicatesSet){

    System.out.println(el);
}

注意*

根据javadocs:

boolean add(E e);
  

将指定的元素添加到该集中(如果尚不存在)

     

如果此集合尚未包含指定的元素,则返回true

通过这种方式,我们可以知道该元素是否已经在集合中,如果可以的话,可以将其添加到副本中。

答案 1 :(得分:1)

我们可以做这样的事情

Integer[] arr = {1, 2, 3, 3, 5, 5, 7, 8, 7};
Set<Integer> set = new HashSet<Integer>();
for (Integer i : arr) { 
 if (set.add(i) == false) 
 {
   System.out.println(i);
 } 
}

答案 2 :(得分:0)

尝试使用下面的逻辑将数组中的每个元素与所有其他元素进行比较,如果发现重复,它将停止执行以继续执行

for(int i = 0; i < a.length;i++) {
    for (int j = i + 1 ; j < a.length; j++) {
        if (a[i] == a[j]) {
            System.out.println("Found duplicate");
            return;
        }
    }
}
System.out.println("No duplicate Found");

答案 3 :(得分:0)

尝试此操作并根据您的要求进行更新

public class Main{
    public static void main(String[] args) {
        int[] ar = new int[] {1, 1, 3, 3, 4, 5, 7, 8};

        int size = ar.length;
        int error = 0;

        for(int i = 0; i < size; i++){
            for(int j = i+1; j < size; j++){
                if(ar[i] == ar[j]){
                    if(i != j){
                        error = error + 1;
                        System.out.println("dulicate element " + j);
                    }
                }
            }
        }
        System.out.println("total number of duplicate element " + error);
    }
}