2012-11-16 3 views
0

중복 된 배열 목록을 찾는 방법에 대한 질문 중 하나를 시도했습니다.배열을 사용하여 중복 찾기 (개념 포함)

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

하지만 루프 부분에 대한에 대한 개념 질문이 있습니다 :
이 프로그램은 작동합니다. 이 경우

List<Integer> myObj = new ArrayList<Integer>(); 

빈 arraylist를 만드는 경우이 줄은 어떻게 작동합니까?

for(int id : values){ if(myObj.contains(id)){ // Why is this true? 

문서 말한다

부울
(객체 O를) 포함 포함이 목록은 지정된 요소가있는 경우에 true를 돌려줍니다 있지만. 결과적으로,이 리스트에 (o == null? e == null : o.equals (e))와 같은 적어도 1 개의 요소 e가있는 경우에만 true를 돌려줍니다. '지정된 요소가리스트

에 포함되어있는 경우에 true를하지만 난 여전히 돈 : 요소, 그 존재이 목록은

반환을 테스트하는 것입니다 - O를 : 정의

는 :

매개 변수 인터페이스 컬렉션에 포함 개념을 이해하지 못한다! 설명해 주셔서 미리 감사드립니다.

+0

글쎄,이 라인들은 어떻게 작동합니까? "// 왜이게 사실입니까?" 나는 꽤 구체적이었다. 아마 그 전에 그 라인을 추가해야 할 것이다. –

답변

1

당신은, myObj.contains (ID)의 첫 번째 검사가 항상 false 수 있지만 코드의 다른 부분을 볼 올바른 :

else{ 
     System.out.println("not contains "+id); 
     myObj.add(id); 
    } 

루프가 진행됨에 따라

이 목록이 채워됩니다 - 추가 반복은 그 조건을 만족시킬 수있다.