嵌套的TreeSet迭代器 - Java

时间:2013-04-06 21:30:34

标签: java nested treeset

我正在尝试编写一个打印两套笛卡尔积的Java程序。我用迭代器定义了两个TreeSet。

问题当我使用 while 语句迭代两个集合(嵌套迭代)时,只有第二个完成时所有元素。似乎迭代器彼此混淆。

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}且set2 = {1,2}我正在获取此输出: (1,1)(1,2) 所需输出的位置是: (1,1)(1,2) (2,1)(2,2)

提前谢谢^ _ ^

1 个答案:

答案 0 :(得分: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