首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中新的for循环可以与两个变量一起使用吗?

Java中新的for循环可以与两个变量一起使用吗?
EN

Stack Overflow用户
提问于 2013-08-05 01:02:49
回答 4查看 20.3K关注 0票数 11

我们可以使用带有两个变量的旧的for循环(for(i = 0, j = 0; i<30; i++,j++))。我们可以在java (带有两个变量的for(Item item : items)?)中使用for-each循环(或增强的for循环)。它的语法是什么?

EN

回答 4

Stack Overflow用户

发布于 2013-08-05 01:04:38

不,你不能。这是使用Iterator的语法糖。有关此问题的良好答案,请参阅here

您需要一个包含这两个变量的对象。

例如,它可以显示在Map对象上。

代码语言:javascript
复制
for (Map.Entry<String,String> e: map.entrySet()) {
    // you can use e.getKey() and e.getValue() here
}
票数 10
EN

Stack Overflow用户

发布于 2015-01-24 13:33:34

以下内容应具有与您尝试实现的相同(性能)效果:

代码语言:javascript
复制
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();
}
票数 4
EN

Stack Overflow用户

发布于 2013-08-05 01:51:53

foreach循环假设只有一个对象集合。您可以在每次迭代中为每个元素执行一些操作。如果你可以一次迭代两个集合,你会希望它的行为如何?如果它们有不同的长度怎么办?

假设你有

代码语言:javascript
复制
Collection<T1> collection1;
Collection<T2> collection2;

您可以编写一个可迭代的包装器,该包装器遍历两者并返回某种类型的合并结果。

代码语言:javascript
复制
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()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18045351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档