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);
    }