📅  最后修改于: 2023-12-03 15:01:33.922000             🧑  作者: Mango
在Java中,数组是一个容器,可以存储多个相同类型的元素。有时候我们需要检查一个数组中是否有重复的元素。
本文将介绍几种不同的方法来检查Java数组中的重复项。
首先,我们可以使用循环遍历数组中的每个元素,并将每个元素与后面的所有元素进行比较,如果找到一个重复的元素,则返回true。
public static boolean hasDuplicates(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
return true;
}
}
}
return false;
}
使用示例:
int[] arr = {1, 2, 3, 4, 5};
System.out.println(hasDuplicates(arr)); // false
int[] arr2 = {1, 2, 3, 4, 5, 2};
System.out.println(hasDuplicates(arr2)); // true
我们也可以使用Set来检查Java数组中是否有重复项。将数组中的所有元素添加到Set中,如果元素已经存在,则说明该数组中有重复的元素。
public static boolean hasDuplicates(int[] arr) {
Set<Integer> set = new HashSet<>();
for (int i = 0; i < arr.length; i++) {
if (set.contains(arr[i])) {
return true;
} else {
set.add(arr[i]);
}
}
return false;
}
使用示例:
int[] arr = {1, 2, 3, 4, 5};
System.out.println(hasDuplicates(arr)); // false
int[] arr2 = {1, 2, 3, 4, 5, 2};
System.out.println(hasDuplicates(arr2)); // true
Java 8及更高版本中的StreamAPI可以更轻松地检查数组中是否有重复项。我们可以使用distinct()方法来去除重复项,并检查删除之后的元素个数是否与原数组相同。
public static boolean hasDuplicates(int[] arr) {
return arr.length != Arrays.stream(arr).distinct().count();
}
使用示例:
int[] arr = {1, 2, 3, 4, 5};
System.out.println(hasDuplicates(arr)); // false
int[] arr2 = {1, 2, 3, 4, 5, 2};
System.out.println(hasDuplicates(arr2)); // true
以上是三种常见的检查Java数组中是否有重复项的方法。使用循环遍历的方法适用于所有版本的Java,使用Set和StreamAPI的方法则需要Java 8及以上版本的支持。具体选择哪种方法可以根据具体应用场景来决定。