我哈瓦一個列表中,當我走過它,這寫代碼遍歷List集合性能問題
for (int i = 0; i < list.size(); i++)
這寫代碼
for (int i = 0,n = list.size(); i < n; i++)
哪個更好,爲什麼?
我哈瓦一個列表中,當我走過它,這寫代碼遍歷List集合性能問題
for (int i = 0; i < list.size(); i++)
這寫代碼
for (int i = 0,n = list.size(); i < n; i++)
哪個更好,爲什麼?
要添加點吉恩,在兩個for循環:
for (int i = 0; i < list.size(); i++
for (int i = 0,n = list.size(); i < n; i++)
讓我們比較的情況:
案例1:
如果列表中的項目不會被修改,也就是說不會頻繁添加和刪除,然後第二個for循環會更好,因爲您將大小列表並將其放入一個變量並進行比較。而在第一個循環中,每次必須計算列表的大小。
案例2:
如果列表項將要經常更換(插入和刪除是多),那麼列表的大小是固定的是不是一個好主意。列表的大小必須每次都通過size()函數動態計算。所以在這種情況下,第一個for循環更好。如果你想使用第二個for循環,那麼在列表中進行更改後,重新計算列表的大小並再次存儲在n中,這是一個開銷。
既然你遍歷集合,使用的for-each ...
for(Object o : list)
{
//treatment...
}
至於那些你貼的區別,我敢肯定,JVM將無論如何優化它。
它沒有任何區別。 list.size()
並不需要計算
/**
* Returns the number of elements in this list.
*
* @return the number of elements in this list
*/
public int size() {
return size;
}
的重複如果你使用ArrayList,fori是最快的方法。如果你使用LinkedList,Foriter是最快的方法。 – isea 2014-09-11 02:18:40
你的問題本質上是http://stackoverflow.com/questions/6093537/for-loop-optimization – 2014-09-11 02:03:25