1. 程式人生 > >為什麼Collection介面繼承Iterable介面,而不是繼承Iterator介面呢?

為什麼Collection介面繼承Iterable介面,而不是繼承Iterator介面呢?

      java.lang.Iterable

      java.util.Iterator

      java.util.Collection

      因為  Iterator介面  的核心方法  next()  或者  hasNext()  是  依賴於迭代器的當前迭代位置的。

      如果Collection直接繼承Iterator介面,勢必導致集合物件中包含當前迭代位置的資料(指標)。

      當集合在不同方法間被傳遞時,由於當前迭代位置不可預置,那麼next()方法的結果會變成不可預知。

      除非再為Iterator介面新增一個reset()方法,用來重置當前迭代位置。

      但即時這樣,Collection也只能同時存在一個當前迭代位置。

      而Iterable則不然,每次呼叫都會返回一個從頭開始計數的迭代器。

      多個迭代器是互不干擾的。