Java foreach和for對不同數據結構的效率

Java foreach和for對不同數據結構的效率

需要循環數組結構的數據時,建議使用普通for循環,因爲for循環採用下標訪問,對於數組結構的數據來說,採用下標訪問比較好。
需要循環鏈表結構的數據時,一定不要使用普通for循環,這種做法很糟糕,數據量大的時候有可能會導致系統崩潰。
對於ArrayList,Vector 其核心是一個數組, 如果明確知道List的實例是ArrayList,Vector,當然用 for(int i=0; i《list.size();i++){} 這種方式是最快的. 當然用Iterator 的話,其實是相關無幾,Iterator 基本上都是指針操作, Iterator本身的處理會增加一點點的開銷,跟蹤一下源碼就可以知道.

Iterator 好處:通用,對於所有集合,使用Iterator性能都一樣, 客戶端自身不維護遍歷集合的”指針”,所有的內部狀態(如當前元素位置,是否有下一個元素)都由Iterator來維護,而這個Iterator由集合類通過工廠方法生成,因此,它知道如何遍歷整個集合。
客戶端從不直接和集合類打交道,它總是控制Iterator,向它發送”向前”,”向後”,”取當前元素”的命令,就可以間接遍歷整個集合。

for(i=0;…) 方法有一個缺點: 如果List的實例是LinkedList等非”數組”存儲方式的時候,遍歷集合的開銷會差別很大! 就以LinkedList來說,以下是get(i)方法來取元素的主要代碼, 我們可以看到,LinkedList 內的get(i)方法,用了循環方式來返回元素,性能肯定會差.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章