0

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

问题是当我使用while语句迭代两个集合(嵌套迭代)时,只有第二个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)

提前谢谢^_^

4

1 回答 1

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
于 2013-04-06T21:35:54.563 回答