我正在尝试有关如何查找重复数组列表的问题之一。
该程序有效:
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
}
}
但是我对 for 循环部分有一个概念问题。如果
List<Integer> myObj = new ArrayList<Integer>();
创建一个空的arraylist,那么这些行是如何工作的?
for(int id : values){ if(myObj.contains(id)){ // Why is this true?
虽然文档说包含
boolean contains
(Object o) 如果此列表包含指定元素,则返回 true。更正式地说,当且仅当此列表包含至少一个元素 e 满足 (o==null ? e==null : o.equals(e)) 时,才返回 true。
指定者:接口 Collection 中的 contains
参数:o - 要测试其在此列表中的存在的元素
返回:如果此列表包含指定元素,则为 true
但我还是不明白这个概念!提前感谢您的解释。