如果在整数数组中有两个或多个相同的元素,如何检查(在Java中)?
一个例子是,如果你想获得一个数组的模式,并且数组可能没有两个或多个相同的元素,那么就没有任何模式。但要知道这一点,你必须检查该数组中是否有两个相同的元素。
答案 0 :(得分:5)
在java-8之前,你可以使用Set
作为@kocko说(+1给他)。如果您不介意使用java-8,请注意以下内容:
public static boolean hasDistinctElements(int[] array) {
return IntStream.of(array).distinct().count() == array.length;
}
答案 1 :(得分:3)
您可以使用Set
,但不允许重复。
Set
。Set
的大小与数组的大小进行比较。
例如:
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
}