如何检查数组中之前是不是出现过元素[重复]

Posted

技术标签:

【中文标题】如何检查数组中之前是不是出现过元素[重复]【英文标题】:How to check if an element has occured before in the array [duplicate]如何检查数组中之前是否出现过元素[重复] 【发布时间】:2015-12-16 00:21:56 【问题描述】:

例如,以下问题说明:

编写一个方法,将两个整数数组作为参数并打印它们的所有公共元素。

我的尝试:

public static void commonElements(int[] A, int[] B)

    for(int i = 0; i < A.length; i++)
        for(int j = 0; j < B.length; j++)
            if(A[i] == B[j])
                System.out.print(A[i] + " ");

现在,问题是该代码仅在每个数组中的元素仅出现一次时才有效。但是例如,如果数组 A 中有两个 4,数组 B 中有四个 4,则输出将是 8 个 4,这是错误的!

那么,我如何检查数组中的某个元素是否已经出现,以便代码不会考虑它。

【问题讨论】:

如果是found,那么break 你需要的代码可以在Jacorb Effect's answer in this question on Stack Overflow找到。 【参考方案1】:
public static void commonElements(int[]A, int []B)

    int count = 0;
    for(int i = 0; i < A.length; i++)
        for(int j = 0; j < B.length; j++)
            if(A[i] == B[j])
                count++;
                break;
                   
    System.out.println(count);

试试这个。通过添加 break 你强制它退出循环。

【讨论】:

【参考方案2】:

您可以将找到的内容存储在集合中。集合不允许重复。

public static void commonElements(int[] a, int[] b)

    Set<Integer> duplicates = new LinkedHashSet<Integer> duplicates;
    for(int i = 0; i < a.length; i++)
        for(int j = 0; j < b.length; j++)
            if(a[i] == b[j])
                duplicates.add(a[i]);
            
        
    
    System.out.println(String.join(" ", duplicates));

注意:按照约定,Java 中的变量名应为小写。

【讨论】:

以上是关于如何检查数组中之前是不是出现过元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查数组是不是包含元素[重复]

检查数组元素是不是包含其他数组中的部分值[重复]

检查Bash数组中是不是存在元素[重复]

数组中求出现两次的元素

C ++如何检查数组中的元素是不是相等?

检查数组中的所有元素是不是都是字符串[重复]