我不知道是否有這樣一種方法來迭代通過Java的每個循環擴展多個集合。在同一個「for」循環中遍歷多個集合?
因此,像:
for (Object element : collection1, collection2, ....)
// do something ...
感謝
我不知道是否有這樣一種方法來迭代通過Java的每個循環擴展多個集合。在同一個「for」循環中遍歷多個集合?
因此,像:
for (Object element : collection1, collection2, ....)
// do something ...
感謝
你可以做的正是這跟的Iterables.concat()
Guava:
for (Foo element : Iterables.concat(collection1, collection2)) {
foo.frob();
}
這很好用!謝謝。 – 2012-03-30 20:35:24
Java不提供CompositeCollection或類似的東西是令人驚訝的。 – Raedwald 2016-04-16 12:41:03
@Raedwald與Streams差不多。 – 2016-04-16 15:23:56
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)
{
}
這是做一個副本。 (這不是我想要的,因爲這會增加內存使用量) – 2015-02-12 18:53:04
如果你的列表的長度相同,只是使用原始for
循環:
Object[] aNum = {1, 2};
Object[] aStr = {"1", "2"};
for (int i = 0; i < aNum.length; i++) {
doSomeThing(aNum[i]);
doSomeThing(aStr[i]);
}
它的工作原理!
你試過了嗎? – ControlAltDel 2012-03-30 19:05:17
那是什麼語義?所有的collection1,然後collection2?或者首先是所有集合,然後是所有集合中的第二個...... – Wolfgang 2012-03-30 19:08:57
@ user1291492當然,這是一個語法錯誤。所以它必須是「不同的東西」。 – 2012-03-30 19:09:51