for(String str : list1) {
...
}
for(String str : list2) {
...
}
假設我們確信list1.size()
等於list2.size()
,如何在一個for
聲明遍歷這兩個列表?
也許像for(String str1 : list1, str2 : list2)
?
for(String str : list1) {
...
}
for(String str : list2) {
...
}
假設我們確信list1.size()
等於list2.size()
,如何在一個for
聲明遍歷這兩個列表?
也許像for(String str1 : list1, str2 : list2)
?
for(int i = 0; i< list1.size(); i++){
String str1 = list1.get(i);
String str2 = list2.get(i);
//do stuff
}
使用基本循環
for(int index=0; index < list1.size() ; index++){
list1.get(index);
list2.get(index);
}
寧願計數以代替list1.size()並將計數計算爲Math.min(list1.size(),list2.size())以確保安全。 – Aubin 2013-04-22 19:07:07
你不能在同一時間與增強for
循環遍歷兩個列表;你必須通過它與傳統的for
循環迭代:
for (int i = 0; i < list1.size(); i++)
{
String str1 = list1.get(i);
String str2 = list2.get(i);
...
}
您可以使用iterators:
Iterator<String> it1 = list1.iterator();
Iterator<String> it2 = list2.iterator();
while(it1.hasNext() && it2.hasNext()) { .. }
或者:
for(Iterator<String> it1 = ... it2..; it1.hasNext() && it2.hasNext();) {...}
我以爲沒有人會遇到Java中的無限集合;) – 2013-04-22 19:02:40
除了OP需要一個for語句之外,這是一個很好的解決方案。 – rgettman 2013-04-22 19:03:47
for(Iterator
至於你說的這兩個該列表大小相同,則可以使用「for」循環而不是「for-each」循環。您可以使用列表的get(int index)方法在每次迭代期間獲取該值。
如果有人感興趣,即使它們的大小不一樣,這個解決方案也會完全遍歷這兩個列表。
int max = Math.max(list1.size(), list2.size());
for(int i=0; i<max; ++i){
if(list1.size()<i){
list1.get(i);
}
if(list2.size()<i){
list2.get(i);
}
}
當列表長度不同時,您希望發生什麼? – 2013-04-22 19:01:59