我試圖端口下面的Python發電機到Java Iterator
:阻斷嵌套循環迭代器
def gen_sums(blocks1, blocks2):
for b1 in blocks1:
for b2 in blocks2:
for n1 in b1:
for n2 in b2:
yield n1 + n2
在Java版本,界面看起來像:
public class Block {
...
public Iterator<Integer> iterator() { ... }
}
public class GenSums implements Iterator<Integer> {
private Iterator<Block> blocks1;
private Iterator<Block> blocks2;
...
@Override
public boolean hasNext() { /* TODO */ }
@Override
public Integer next() { /* TODO */ }
}
...我發現我很難找到正確的答案。在GenSums
課程中只有很多州可以存儲,並從中恢復。在Java中是否有任何「標準」方式來實現這種迭代器?我想避免使用第三方庫。
請參閱https://google.github.io/guava/releases/snapshot/api/docs/com/google/common/collect/Sets.html#cartesianProduct-java.util.Set...-如果您不喜歡不想使用庫,你必須保持狀態並自己重置「內部」迭代器。 – BadZen
(當然,你可以隨時複製這個函數的源代碼......) – BadZen