检查一个整数数组中是否有两个相同的元素

时间:2014-12-15 13:44:47

标签: java arrays

如果在整数数组中有两个或多个相同的元素,如何检查(在Java中)?

一个例子是,如果你想获得一个数组的模式,并且数组可能没有两个或多个相同的元素,那么就没有任何模式。但要知道这一点,你必须检查该数组中是否有两个相同的元素。

4 个答案:

答案 0 :(得分:5)

在java-8之前,你可以使用Set作为@kocko说(+1给他)。如果您不介意使用,请注意以下内容:

public static boolean hasDistinctElements(int[] array) {
    return IntStream.of(array).distinct().count() == array.length;
}

答案 1 :(得分:3)

您可以使用Set,但不允许重复。

  1. 将数组的所有元素添加到Set
  2. Set的大小与数组的大小进行比较。
    • 如果它们相等,则没有重复
    • 否则,有重复。
  3. 例如:

    int[] array = ...
    Set<Integer> set = new HashSet<Integer>();
    for (int i : array) {
        set.add(i);
    }
    if (set.size() == array.length) {
        System.out.println("There are no duplicates");
    } else {
        System.out.println("There are duplicates");
    }
    

答案 2 :(得分:1)

一种方法是使用嵌套循环循环。

for(int i=0; i<arr.length ; i++)
    for(int j=i; j<arr.length ; j++)
        if(arr[i] == arr[j])
            //two same elements detected

答案 3 :(得分:1)

您可以使用以下方法对数组进行排序,然后检查邻居中的重复项:

private boolean checkDuplicates(int[] array) {
    Arrays.sort(array);                        //sort the array in ascending order
    int prevElem = array[0];
    for (int i = 1; i < array.length; ++i) {
        if (array[i] == prevElem) { //if duplicates exist, they will be neighbors, since the array is sorted
            return true; //no need to examine the rest of the array elements, if a duplicate is found
        }
        prevElem = array[i];
    }
    return false; //if no duplicates are found, return true
}