我们可以使用带有两个变量的旧的for循环(for(i = 0, j = 0; i<30; i++,j++)
)。我们可以在java (带有两个变量的for(Item item : items)
?)中使用for-each循环(或增强的for循环)。它的语法是什么?
发布于 2013-08-05 01:04:38
发布于 2015-01-24 13:33:34
以下内容应具有与您尝试实现的相同(性能)效果:
List<Item> aItems = new List<Item>();
List<Item> bItems = new List<Item>();
...
Iterator aIterator = aItems.iterator();
Iterator bIterator = bItems.iterator();
while (aIterator.hasNext() && bIterator.hasNext()) {
Item aItem = aIterator.next();
Item bItem = bIterator.next();
}
发布于 2013-08-05 01:51:53
foreach循环假设只有一个对象集合。您可以在每次迭代中为每个元素执行一些操作。如果你可以一次迭代两个集合,你会希望它的行为如何?如果它们有不同的长度怎么办?
假设你有
Collection<T1> collection1;
Collection<T2> collection2;
您可以编写一个可迭代的包装器,该包装器遍历两者并返回某种类型的合并结果。
for(TwoThings<T1, T2> thing : new TwoCollectionWrapper(collection1, collection2) {
// one of them could be null if collections have different length
T1 t1 = thing.getFirst();
T2 t2 = thing.getSecond();
}
这是我能想到的最接近的方法,但我看不出它有多大用处。如果两个集合都要一起迭代,那么首先创建一个Collection<TwoThings>
会更简单。
除了并行迭代之外,您还可以想要按顺序迭代。有一些实现,例如,Guava的Iterables.concat()
https://stackoverflow.com/questions/18045351
复制相似问题