問題:
在集合中導航時,什麼是最有效的方法: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 迴圈或迭代器:哪一個對於集合遍歷更有效?的詳細內容。更多資訊請關注PHP中文網其他相關文章!