原文地址:http://blog.csdn.net/insistgogo/article/details/19619645java
一、建立一個ArrayListandroid
二、List經常使用的遍歷方法有三種:ide
(1)下標循環oop
說明:性能
1)最通常的方法編碼
2)idea快捷鍵:itar + Tab 或者 fori + Tabidea
(2)for each循環spa
說明:在不修改容器長度時,僅僅遍歷容器時推薦使用。.net
1)優勢:代碼簡潔美觀:不存在索引,因此不用關心下標、初始值、是否越界等orm
2)缺點:刪除容器中的元素容易出錯。
3)idea快捷鍵:iter + Tab 或者 i + Tab
(3)迭代器循環
或者
說明:在刪除容器中元素時,最好使用迭代器循環
1)優勢:能對容器中的元素進行刪除
2)idea快捷鍵:itco + Tab
三、三種遍歷方法的效率比較
見文章:ArrayList和LinkedList的幾種循環遍歷方式及性能對比分析
這裏該文章總結下:
(1)對於ArrayList而言:
1)從速度上看,foreach和迭代器循環速度差很少,可是都比下標遍歷慢。
2)綜合編碼難度,在僅僅對集合進行遍歷的時候,只使用for each
(2)對於LinkedList而言:
1)從速度上看,foreach和迭代器循環速度差很少,可是遠比下標遍歷快。
2)綜合編碼難度,在僅僅對集合進行遍歷的時候,只使用for each
說明:
(1)對於LinkedList,GetAt方法須要一次遍歷鏈表,其時間複雜度爲O(n),所以使用下標遍歷時,速度很慢,級別爲n^2。
(2)對於ArrayList,GetAt方法直接使用下標定位,其時間複雜度爲O(1),所以使用下標遍歷時,級別爲n。
總結:不管對於ArrayList仍是LinkedList,
(1)僅對其遍歷而不修改容器大小時,只使用foreach循環
(2)須要邊遍歷邊修改容器大小時(插入刪除元素),只使用迭代器循環