2013-04-06 4 views
0

두 세트의 Cartesian Product를 인쇄하는 Java 프로그램을 작성하려고합니다. 반복자를 사용하여 두 개의 TreeSet을 정의했습니다.중첩 된 트리 집합 반복자 - Java

내가 두 세트만을 완료 한되는 두 번째 동안 모든 요소, 동안 문을 사용하여 (중첩 된 반복) 주위에 반복있을 때 문제는입니다. iterators가 서로 혼란스러워지고있는 것 같습니다.

while (iSet1.hasNext()) { // to iterate over the first set 
     int i = iSet1.next(); 

     while (iSet2.hasNext()) { // to iterate over the second set 
      int j = iSet2.next();    
      System.out.printf("(%d,%d)",i,j); 
     } // end of inner while 
    } // end of outer while 

경우 SET1 = {1,2} 및 {1,2 SET2 = I}이 출력 얻고 : (1,1) (1,2) 출력 소망 입니다 : 사전에 (1,1) (1,2) (2,1) (2,2)

감사합니다^_^

+0

Flup이 맞습니다. 2 차 메모에서 이터레이터의 이름을 의미있는 이름으로 바꾸어야합니다. – BlackBox

답변

2

는 직교 제품을 계산하려면, 당신은거야 첫 번째 이터레이터의 각 값에 대해 두 번째 이터레이터를 다시 초기화해야합니다.

while (iSet1.hasNext()) { // to iterate over the first set 
    int i = iSet1.next(); 
    iSet2 = secondSet.iterator(); // <- re-initialize the iterator here 
    while (iSet2.hasNext()) { // to iterate over the second set 
     int j = iSet2.next();    
     System.out.printf("(%d,%d)",i,j); 
    } // end of inner while 
} // end of outer while 
+0

위대한 !! 그냥^_^고마워. –