如何在数组中检查元素是否已经出现

时间:2015-12-16 00:21:56

标签: java arrays

例如,以下问题表明:

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

我的尝试:

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,这是错误的!

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

2 个答案:

答案 0 :(得分:0)

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来强制它离开循环。

答案 1 :(得分:0)

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

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中的变量名称应为小写。