2012-03-30 13 views
15

Java'da her bir döngü için genişletilmiş genişletilmiş koleksiyonları tekrarlamak için bir yol olup olmadığını merak ediyorum.Aynı "for" döngüsünde birden çok koleksiyonda yineleyin mi?

Yani böyle bir şey:

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

teşekkür

+1

bunu denediniz mi? – ControlAltDel

+2

Bunun semantiği nedir? Koleksiyon1, sonra koleksiyon2? Ya da tüm koleksiyonlardan ilki, sonra tüm koleksiyonların ikincisi ... – Wolfgang

+2

@ user1291492 Bu bir sözdizimi hatası, elbette. Yani "farklı bir şey" olmalıydı. –

cevap

20

Tam olarak bu Guava 'ın Iterables.concat() ile yapabilirsiniz:

for (Foo element : Iterables.concat(collection1, collection2)) { 
    foo.frob(); 
} 
+0

Bu harika çalışıyor! Teşekkürler. –

+0

Java'nın bir CompositeCollection veya bunun gibi bir şey sağlaması şaşırtıcı değildir. – Raedwald

+0

@Raedwald, Streams ile oldukça fazla. –

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) 
{ 

} 
+1

Bu bir kopyasını yapıyor. (istediğim şey bu değil, çünkü bu bellek kullanımını artıracaktır) –

1

sizin listeleri aynı uzunluğa varsa, sadece for işlenmemiş döngüyü kullanın:

Object[] aNum = {1, 2}; 
Object[] aStr = {"1", "2"}; 

for (int i = 0; i < aNum.length; i++) { 
    doSomeThing(aNum[i]); 
    doSomeThing(aStr[i]); 
} 

Çalışıyor!

İlgili konular