高效Java第四十六條for-each循環優于傳統的for循環

傳統for循環的缺點

上面這些做法都比while循環更好。
迭代器和索引變量都會造成一些混亂。

for-each循環的優勢

for-each循環完全隱藏了迭代器或索引變量,避免了混亂和出錯的可能性。


:可以讀作“在......里面”
for-each循環不會有性能損失。在某些情況下,比起普通的for循環,它還稍有些性能優勢,它對數組索引的邊界值只計算一次。

for-each循環和for循環在多個集合迭代時的對比

在對多個集合進行嵌套迭代時,for-each循環相對于傳統的for循環優勢更明顯。

對外部的集合suits調用了太多次的next方法。
下面這個例子不會報錯:


如何修復bug:
必須在外部循環的作用域中添加一個變量來保存外部元素:

for-each循環沒有這個問題:

for-each循環可以遍歷集合、數組和任何實現Iterable接口的對象。

for-each可循環在簡潔性和預防bug方面有著傳統的for循環無法比擬的優勢,并且沒有性能損失。

無法使用for-each循環的情況——過濾

需要遍歷集合,并刪除選定的元素,就需要使用顯示的迭代器,以便可以調用它的remove方法。

無法使用for-each循環的情況——轉換

需要遍歷列表或數組,并取代它部分或全部的元素值,就需要列表迭代器或數組索引,以便設定元素的值。

無法使用for-each循環的情況——平行迭代

需要并行地遍歷多個集合,就需要顯示的控制迭代器或索引變量,以便所有迭代器或索引變量都可以同步前移。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,740評論 18 399
  • 53.計算字符 在字符串中獲取字符值的數量, 可以使用字符串字符屬性中的計數屬性: let unusualMena...
    無灃閱讀 1,124評論 0 4
  • 一、基本數據類型 注釋 單行注釋:// 區域注釋:/* */ 文檔注釋:/** */ 數值 對于byte類型而言...
    龍貓小爺閱讀 4,288評論 0 16
  • “有的人死了,它卻還活著”如同馬爾克斯。他是值得被銘記的。他用筆尖描繪的文字像是精美的素描,在一頁頁蒼白的圖紙上繪...
    西恩小姐_閱讀 546評論 0 0
  • 我的親人,這似乎是一個很適合學生時代作文的命題,我卻感到無從下筆。我是一個生活在幸福的家庭里的孩子,父母也沒有什么...
    亭子文閱讀 343評論 1 6