2013-04-17 45 views
0

我有一個下面的for循環獲取指數環

ArrayList<User> userList; 
for(User user:userList){ 
    .... 
} 

如何獲取,即時通訊與工作電流obj的指數? 我可以改變它經常for(int i...)循環,但這將是反生產力。

謝謝。

+0

宣佈提高各所迭代循環外的INT指數將使指數離子 –

+1

它爲什麼會反作用? – jazzbassrob

+3

實際上,當您需要可能會產生反效果的索引時,它使用的是foreach循環。 – zakinster

回答

3

你必須使用自己的櫃檯像這樣的

int counter = 0; 
ArrayList<User> userList; 
for(User user:userList){ 
    .... 

counter++; 
} 

這是因爲每個循環Java是基於不基於基於指數反覆迭代器。實際上,foreach循環內部使用迭代器。所以它沒有任何索引。它會自動移動到一個集合或列表的項目上,根據需要抓取每個項目的引用。

看這個圖象

enter image description here

以這種方式迭代遍歷每個元素或對象,而無需索引。作爲for循環。

,或者您可以使用

User user = null; 

for (int counter = 0; counter < userList.size(); counter++) { 
    user = userList.get(counter); 
} 
3

如果您想使用索引,則使用for(int i...)是非常合理的。

2

你可以使用一個獨立的計數器:

int index = 0; 
for (User user: list) { 
    //use index 
    index++; 
} 

但說實話,如果你需要的指數,它可能是更容易,只需使用普通的舊式for循環:

for (int i = 0; i < list.size(); i++) { 
    User user = list.get(i); 
} 
+0

downvote的任何原因? – assylias

1

恐怕你不得不與這個或與櫃檯的for循環。沒有其他辦法。

int index = 0; 
for(User user:userList){ 
    .... 
    index++; 
} 
2

這種類型的循環被稱爲的foreach循環 ..迭代它在收集要素 所以沒有真正的指標..這就像載體,其具有迭代器(如果你知道在C++ STL)

如你所說的普通for循環(對於(INT I = 0 ...)),只要你想