首頁 > Java > java教程 > For-each 迴圈或迭代器:哪一個對於集合遍歷更有效?

For-each 迴圈或迭代器:哪一個對於集合遍歷更有效?

DDD
發布: 2024-11-25 15:24:10
原創
986 人瀏覽過

  For-each Loop or Iterator: Which is More Efficient for Collection Traversal?

增強的for 循環或迭代器:評估循環效率

問題:

在集合中導航時,什麼是最有效的方法:for-each 循環或迭代器?

程式碼片段:

For-each循環:

List<Integer> a = new ArrayList<>();
for (Integer integer : a) {
  integer.toString();
}
登入後複製

迭代器:

List<Integer> a = new ArrayList<>();
for (Iterator iterator = a.iterator(); iterator.hasNext();) {
  Integer integer = (Integer) iterator.next();
  integer.toString();
}
登入後複製

評估:

1。讀取集合值:

當簡單地遍歷集合來存取值時,迭代器和 for-each 迴圈具有相同的效率,因為 for-each 迴圈內部使用了迭代器。

2. C 風格循環與迭代器:

與迭代器和for-each 循環相比,透過get(i) 存取元素的傳統「C 風格”循環可能會表現出性能缺陷。對於某些資料結構(例如鍊錶),Get(i) 的複雜度為 O(n),導致循環的整體時間複雜度為 O(n2)。

3.迭代器效率:

迭代器保證 next() 的時間複雜度為 O(1),渲染循環 O(n)。

4。字節碼比較:

檢查 for-each 迴圈和迭代器產生的字節碼,發現它們幾乎無法區分,顯示沒有內在的效能差異。

結論:

  • 選擇 for-each 迴圈或迭代器僅迭代集合。
  • 優先選擇 for-each 循環,因為其簡潔性和可讀性,除非效率至關重要。
  • 注意傳統 C 風格循環在某些場景中的潛在效能缺陷涉及 get(i)。

以上是For-each 迴圈或迭代器:哪一個對於集合遍歷更有效?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板