在同一个“for”循环中迭代多个集合?

时间:2012-03-30 19:04:27

标签: java syntax for-loop iterator

我想知道是否有这种方法可以通过扩展为java中的每个循环迭代多个集合。

类似于:

for (Object element : collection1, collection2, ....)
         // do something ...

由于

4 个答案:

答案 0 :(得分:21)

您可以使用GuavaIterables.concat()

完成此操作
for (Foo element : Iterables.concat(collection1, collection2)) {
    foo.frob();
}

答案 1 :(得分:2)

Collection<Foo> collection1 = ...
Collection<Foo> collection2 = ...
Collection<Foo> collection3 = ...
...

Collection<Foo> all = ...
all.addAll(collection1);
all.addAll(collection2);
all.addAll(collection3);
...

for(Foo element : all)
{

}

答案 2 :(得分:1)

如果您的列表长度相同,只需使用原始CREATE OR REPLACE TRIGGER BIEmprunter BEFORE INSERT OR UPDATE OF numexemplaire ON emprunter FOR EACH ROW DECLARE livreEmpruntable INTEGER; BEGIN SELECT exemplaire.empruntable INTO livreEmpruntable FROM exemplaire join emprunter ON emprunter.numexemplaire = exemplaire.numexemplaire; IF livreEmpruntable != 1 THEN raise_application_error(-20000, 'exemplaire non empruntable'); END if; END; 循环:

for

有效!

答案 3 :(得分:0)

使用普通Java 8且没有任何其他库:

["A", "B", "C", "D", "E", "F"]

然后您可以将其用作:

public static <T> Iterable<T> compositeIterable(Collection<? extends T>... collections)
{
    Stream<T> compositeStream = Stream.of(collections).flatMap(c-> c.stream());
    return compositeStream::iterator;
}