Java 如何使用for each循环查找数组中的重复元素

Java 如何使用for each循环查找数组中的重复元素,java,arrays,loops,Java,Arrays,Loops,我正在尝试使用为每个循环打印一个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

我正在尝试使用
为每个
循环打印一个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");
                }
            }
        }
    }
}
包登录;
公共类DupsArray{
静态int[]a={1,2,3,3};
公共静态void main(字符串[]args){
int length=a.length;

对于(int i=0;i尝试使用下面的逻辑将数组中的每个元素与所有其他元素进行比较,如果发现任何重复项,它将停止执行以继续执行

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");
for(int i=0;i
您可以这样使用:

  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);
     }     
  }
注意*

根据javadocs:

boolean add(E e);
如果指定的元素尚未存在,则将其添加到此集合

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


这样我们可以知道元素是否已经在集合中,如果已经在集合中,我们可以将其添加到副本中。

我们可以这样做

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);
 } 
}
Integer[]arr={1,2,3,3,5,5,7,8,7};
Set=newhashset();
对于(整数i:arr){
if(set.add(i)=false)
{
系统输出打印LN(i);
} 
}

尝试此功能并根据您的要求进行更新

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);
    }
}
公共类主{
公共静态void main(字符串[]args){
int[]ar=新的int[]{1,1,3,3,4,5,7,8};
int size=ar.length;
整数误差=0;
对于(int i=0;i
这将只打印第一个重复项是的。但是如果我们需要查找所有重复项而不是返回,我们可以在那里执行我们想要的操作。如果我们需要在大数组中查找重复项,则遍历数组2次是不好的。对于较大的数组,这将花费大量时间来完成。是的,但我不明白为什么要使用2 dif不同的散列集。在第二个散列集中,我保留了副本供以后使用(如果需要)
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);
    }
}