Java使用数组查找重复项(包含概念)
我正在尝试一个关于如何查找重复数组列表的问题Java使用数组查找重复项(包含概念),java,list,for-loop,contains,Java,List,For Loop,Contains,我正在尝试一个关于如何查找重复数组列表的问题 该程序的工作原理是: import java.util.*; public class CheckDuplicates { public static void main(String[]args){ boolean containsDuplicate; int[] values = {1,2,3,4,5,6,7,8,9,1,3,4,5,10}; List<Integer> myObj = new Array
该程序的工作原理是:
import java.util.*;
public class CheckDuplicates {
public static void main(String[]args){
boolean containsDuplicate;
int[] values = {1,2,3,4,5,6,7,8,9,1,3,4,5,10};
List<Integer> myObj = new ArrayList<Integer>();
Set<Integer> dupInt = new HashSet<Integer>();
for(int id : values){
System.out.println(myObj);
if(myObj.contains(id)){
System.out.println("From contains "+id);
containsDuplicate = true;
dupInt.add(id);
}else{
System.out.println("not contains "+id);
myObj.add(id);
}
}
for(int dup : dupInt)
System.out.println(dup); // prints the duplicates
}
}
尽管文件上说
包含
如果此列表包含
指定的元素。更正式地说,当且仅当
列表包含至少一个元素e,以便(o==null?e==null:
o、 等于(e))指定者:接口集合中包含
参数:o-此列表中存在的待测试元素
返回:如果此列表包含指定的元素,则返回true
但我还是不明白这个概念!提前感谢您的解释。您是正确的,myObj.contains(id)的第一次检查将始终为false,但请参阅代码的其他部分:
else{
System.out.println("not contains "+id);
myObj.add(id);
}
随着循环的进行,您的列表将被填充,并且进一步的迭代可能会满足该条件。我确实提到了“这些行是如何工作的?”以及“//为什么是这样?”我非常具体,也许我应该在这之前加上这一行。
for(int id : values){ if(myObj.contains(id)){ // Why is this true?
else{
System.out.println("not contains "+id);
myObj.add(id);
}