回覆列表
  • 1 # 輝煌小女子

    迭代可以遍歷並選擇集合中的每個物件而不改變集合的結構,比如你訪問集合的時候用集合自帶的remove()方法去除集合的元素,這樣會是使集合的Size()改變,迴圈的時候會出錯;而把集合放入迭代器,用迭代器的remove()就不會出現問題

  • 2 # 但求無Bug

    其實嚴格來說,迭代是一種設計模式,迭代的目的是遍歷某一類資料集合的內容,而無需瞭解該類資料的資料結構。

    其實現思路是:定義一個迭代器介面,該介面至少宣告兩個方法,分別是:hasNext(),和next()。透過hasNext()判斷是否還有可遍歷元素,透過next()返回可遍歷元素。至於具體實現則根據不同需求建立不同實現類即可。

    也就是說,迭代本沒有程式語言屬性,只不過幾乎所有的程式語言都會支援迭代罷了。

    在Java中遍歷集合可以不用迭代方式,當然,不用迭代方式的遍歷僅限於List介面的實現類。因為List介面規定可以透過集合索引來取得對應的值,不論這個List用的是陣列還是連結串列實現。

    但是,Java中的集合不僅僅只有List,還有Set。像這種非List集合是無法透過索引來獲取指定元素的,所以這時候迭代方式就排上了用場。

    除了List和Set之外,Java還有一種雙列集合,又稱key-value鍵值對集合。只不過這種集合遍歷時無法直接透過迭代方式遍歷。而是透過折中方式,要麼先獲得key值集合,透過遍歷key來遍歷map,要麼是獲得Map.Entry的集合來遍歷。

    總之,迭代方式不屬於任何程式語言,它只是一種設計思想,只不過大多數程式語言會去實現它罷了,包括Java。

  • 中秋節和大豐收的關聯?
  • 為何火箭隊被淘汰後,在以後的系列賽很少再有關於判罰的爭論了?