重複した配列のリストを見つける方法に関する質問の1つを試していました。
このプログラムは動作します:
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>();
空の配列リストを作成すると、これらの行はどのように機能しますか?
for(int id : values){ if(myObj.contains(id)){ // Why is this true?
ドキュメントには含まれていると記載されていますが、
boolean contains
(Object o) このリストに指定された要素が含まれている場合に true を返します。より正式には、このリストに (o==null ? e==null : o.equals(e)) となる要素 e が少なくとも 1 つ含まれている場合にのみ true を返します。
定義: インターフェース Collection 内の contains
パラメータ: o - このリスト内の存在をテストする
要素 戻り値: このリストに指定された要素が含まれる場合は true
しかし、私はまだ概念を理解していません!説明してくれてありがとう。