在java中,如何检查一维数组中的元素是否彼此不同?

时间:2014-03-06 22:02:41

标签: java arrays

例如,我有一个一维数组,如何检查所有元素是否不同?(没有一个与其他元素相同,所有元素应该不同)使用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;

}

那么有什么好的方法可以用来检查不同的吗?

4 个答案:

答案 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());