Iterator和Iterable的區別
阿新 • • 發佈:2020-10-19
public interface Iterator<E>
public interface Iterable<T>
這兩個都是介面,但是Iterable介面中包含了Iterator
但是問題是為什麼Map,List,Set等要implements Iterable 而不是Iterator這個介面
原因是:
因為Iterator介面的核心方法next()或者hasNext() 是依賴於迭代器的當前迭代位置的。
如果Collection直接實現Iterator介面,勢必導致集合物件中包含當前迭代位置的資料(指標)。
當集合在不同方法間被傳遞時,由於當前迭代位置不可預置,那麼next()方法的結果會變成不可預知。
但即時這樣,Collection也只能同時存在一個當前迭代位置。
而Iterable則不然,每次呼叫都會返回一個從頭開始計數的迭代器。
多個迭代器是互不干擾的。
轉載於:https://my.oschina.net/mdxlcj/blog/1576262