“对于两个对象的每个”循环

时间:2015-05-11 20:06:39

标签: java for-loop

ArrayList<String> date=new ArrayList<String>();
ArrayList<String> time=new ArrayList<String>();
//addition of elements in the list
...
...
for(String x :date,String y: time)
{
    System.out.println(x+" "+y);
}

两个对象可以通过单个“for each”循环迭代吗? 我试过上面的代码,我得到了编译错误。有没有语法错误?

2 个答案:

答案 0 :(得分:3)

不,这不会起作用。使用for-each循环无法做到这一点;你必须使用显式索引或迭代器进行正常的for循环。

答案 1 :(得分:1)

没有内置功能,但有third-party libraries和免费提供的Java-8代码可以让你这样做:

Stream<String> a = Stream.of(date);
Stream<String> b = Stream.of(time);

List<String> zip = StreamUtils.zip(a, b,
                                  (a, b) -> a + " " + b)
                             .collect(Collectors.toList());

如果你没有使用Java 8或者不习惯使用流,那么使用带有索引的for循环或迭代两个迭代器是下一个最接近的东西:

Iterator<String> a = date.iterator();
Iterator<String> b = time.iterator();
while (a.hasNext() && b.hasNext()) {
    System.out.println(a.next() + " " + b.next());
}

Demo.