我正在尝试将以下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中实现这种迭代器?我希望避免使用第三方库。你知道吗
如果您使用的是Java8,那么您可能需要考虑生成流而不是迭代器。如果需要,可以将流转换为迭代器(使用
BaseStream.iterator()
)。你知道吗例如:
如您所见,这与Python中的等价语句非常接近,
for
语句变成了flatMap
,yield
变成了map
。你知道吗相关问题 更多 >
编程相关推荐