例如,我有一个一维数组,如何检查所有元素是否不同?(没有一个与其他元素相同,所有元素应该不同)使用for-loop?还是其他什么?
我想也许这样,但不可能是真的:
int []array={1,2,3,4,4,6}
for(int i=0;i<a.length;i++){
if(a[i]!=a[i+1])
return true;
else
return false;
}
那么有什么好的方法可以用来检查不同的吗?
答案 0 :(得分:7)
将数组中的所有项添加到Set中,并使用原始数组大小检查设置大小。
如果它们的大小不同,则会出现重复的元素。
答案 1 :(得分:2)
创建HashSet
(或其他类型的Set
),并循环遍历数组的元素。一次添加一个。如果该元素已存在于Set
中,则并非所有元素都不同,您可以返回false
。如果add
返回false
,您可以告诉我们;然后你不必须检查数组的其余部分。如果你完成整个数组并且没有一个是相同的,那么它们都是不同的,你可以返回true
。
您当前代码的问题在于您只检查第一个和第二个元素,并根据该比较立即返回一些内容,而您不考虑其余元素。
答案 2 :(得分:0)
有几种方法可以做到这一点。例如,您可以使用两个for
循环:
boolean hasDuplicates(int[] array) {
for (int i = 0; i < array.length; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[i] == array[j]) {
return true;
}
}
}
return false;
}
如果这对你来说太多了,你可以从数组中创建一个Set
并比较集合和数组的大小。该集自动删除重复的条目。
答案 3 :(得分:0)
Set<String> values = new HashSet<>(Arrays.asList(array));
assertEquals(array.length, values.size());