无论如何,问题是我不能真正从next()返回单个对象,并且我也不能让Iterator接受多个类型。那么,有什么想法吗?
显然,您将需要一个轻量级的“ pair”类。这大致类似于
Map.Entry内部类。
这是通用解决方案的粗略介绍:
public class ParallelIterator <T1, T2> implements Iterator<Pair<T1, T2>> { public class Pair<TT1, TT2> { private final TT1 v1; private final TT2 v2; private Pair(TT1 v1, TT2 v2) { this.v1 = v1; this.v2 = v2; } ... } private final Iterator<T1> it1; private final Iterator<T2> it2; public ParallelIterator(Iterator<T1> it1, Iterator<T2> it2) { this.it1 = it1; this.it2 = it2; } public boolean hasNext() { return it1.hasNext() && it2.hasNext(); } public Pair<T1, T2> next() { return new Pair<T1, T2>(it1.next(), it2.next()); } ...}注意:这并未明确处理列表长度不同的情况。将会发生的是,较长列表末尾的多余元素将被静默忽略。



