我正在尝试编写一个打印两套笛卡尔积的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)
提前谢谢^ _ ^
答案 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