在java中使用一个for循环从数组中查找重复项

时间:2017-03-12 02:30:54

标签: java arrays for-loop duplicates

我想通过仅使用一个for循环从数组中找到重复项。我通过使用两个for循环来做到这一点。我怎么能用Java做到这一点?

duplicates = false;
for (int i = 0; i < array.length; i++){
   for(int j = i+1; j < array.length; j++){
       if(name[i].equals(name[j])){
          duplicates = true;
       }
   }
}

2 个答案:

答案 0 :(得分:1)

你可能会考虑使用Set,否则你可能需要做两个循环。以下示例不会有重复项。请记住,我不保证此选项具有更高的性能。性能方面,使用原始数组比使用java collection apis'

更好
Set  setString = new LinkedHashSet();

    for(int i=0;i<array.length;i++){
        setString.add(array[i]);
    }

}

答案 1 :(得分:1)

  

我想先找出重复的内容。那么如何在不使用HashSet或其他的情况下仅使用一个for循环来完成此操作。这是我的目标。

这是不可能的。

实际上,如果你作弊就有可能。

int len = array.length;
boolean duplicates = false;
for (int i = 0; i < len * len; i++){
   if (name[i / len].equals(name[i % len])){
       duplicates = true;
   }
}

Look Ma ... only one loop

但这仍然是O(N^2)所以你实际上并没有真正实现任何目标。