同时运行2个增强的for循环

时间:2014-10-17 06:57:19

标签: java for-loop foreach

是否可以在下面同时运行2个增强的for循环?

loops1 is a list of integers 1,2,3
loops2 is a list of integers 5,6,7


for(loop1 : loops1 && loop2 : loops2)
{
   System.out.println(loop1 + loop2);
}


Output in a way  : 1 5 2 6 3 7

任何输入都会有所帮助。

谢谢!!!

6 个答案:

答案 0 :(得分:6)

不,这是不可能的。您可以尝试使用迭代器实现此目的:

Iterator<Integer> it1 = loops1.iterator();
Iterator<Integer> it2 = loops2.iterator();

while (it1.hasNext() && it2.hasNext())
    System.out.println(it1.next()+it2.next());

当然,如果列表的长度不同,则必须决定如何处理较长列表的额外整数。

答案 1 :(得分:1)

不,你不能这样做。您必须有一个复合值列表(例如,每个项目有两个整数)或其中一些,或者当然使用正常的for循环。

答案 2 :(得分:1)

  

是否可以同时运行2个增强循环

这是不可能的,我无法想象可能需要它的情况。可以找到文档here

答案 3 :(得分:0)

不,没有。您可以尝试执行常规for循环并通过索引检索...或者使用java 8并查看如果它们的功能结构允许您压缩2个集合,这最终只会成为正常的每个循环。< / p>

答案 4 :(得分:0)

没有

当列表长度不同时,它会如何工作?

当你编译for-each循环时,字节代码只是一个带有一些额外(隐藏)变量的循环的正常。 JAD反编译器可以用来验证这一点。

例如,编译:

for(String s : list)
    System.out.println(s);

将生成等效的字节码:

int length = list.size();
for(int i = 0; i < length; i++) {
    String s = list.get(i);
    System.out.println(s);
}

答案 5 :(得分:0)

  

是否可以对同时运行的循环进行2次增强

这是不可能的。的

这里有两个长度相同的列表。你也想拿出来作为

1 5 2 6 3 7

(First element of list1) (first element of list two)...so on

然后你可以尝试如下

 List<Integer> list1=new ArrayList<>();
 List<Integer> list2=new ArrayList<>();
 list1.add(1);
 list1.add(2);
 list1.add(3);
 list2.add(5);
 list2.add(6);
 list2.add(7);
 for(int i=0;i<list1.size();i++){ // both list must in equal size
    System.out.print(list1.get(i) + " " + list2.get(i));
    System.out.print(" ");
 }

Out put:

 1 5 2 6 3 7