同时提供两个列表内容的迭代器?
假设我有这个:
public class Unit<MobileSuit, Pilot> {
...
List<MobileSuit> mobileSuits;
List<Pilot> pilots;
...
}
我想以该类之外最简单的方式迭代每个对。我应该如何去做呢?我想过这样做:
public class Unit<MobileSuit, Pilot> {
...
Iterator<MobileSuit> iteratinMechas;
Iterator<Pilot> iteratinPeople;
class IteratorCustom<MobileSuit, Pilot> implements Iterator {
public boolean hasNext() {
return iteratinMechas.hasNext() && iteratinPeople.hasNext();
}
public void remove() {
iteratinMechas.remove();
iteratinPeople.remove();
}
public Object next() {
// /!\
}
}
public Iterator iterator() {
return new IteratorCustom<MobileSuit, Pilot>(mobileSuits, pilots);
}
}
沿着这些路线的东西。
无论如何,问题是我不能真正从next()只返回一个对象,我也不能让迭代器采用多个类型。那么,有什么想法吗?
另外,我无法制作一个新类来组合MobileSuit和Pilot。我需要将它们分开,即使我一次迭代两者。原因是可能有没有飞行员的机动战士,我不确定如何通过将它们保持在同一班级来解决这个问题。这个类需要在其他地方处理,所以我必须围绕它和许多其他东西统一一个接口。基本上,假设MobileSuit和Pilot需要分开。