Iterator迭代器簡略分析

2022-05-26 21:39:13 字數 1374 閱讀 4479

iteratorit =c.iterator()

當在執行這行語句時,它是底層是怎麼樣子的?首先collectionextendsitrable,介面繼

承介面,而itrable中有乙個抽象方法,iteratoriterator(),其返回值是iterator,

iterator介面中有三個抽象方法,hasnext(),next(),remove(),那麼,collection就應該

重寫這個方法,但是它是乙個介面,介面中只有抽象方法,我們應該看看它的子類有沒有做

這個事情,我們發現list介面繼承了collction,那麼它應該重寫這個方法吧,但是,它是一

個介面,也不行,所以我們應該去看看它的子類,這時我們發現了arraylist,arraylist

implementslist,這說明arraylist是乙個實現類,類中肯定重寫了父介面的方法,

publiciteratoriterator()

這是什麼?返回值不是iterator麼?它返回乙個newitr()是什麼鬼?

別急,當我們看到乙個類的返回值是乙個介面或者抽象類時,那麼它肯定返回的是乙個子類物件,

privateclassitrimplementsiterator

publicobjectnext()

publicvoidremove()

}

itr是不是iterator的乙個子類物件?類中是不是重寫了hasnext()、next()、remove()方法?當然現在都看不懂方法實現

那麼當我們在執行

it.hasnext()時,編譯看左邊,iterator中是不是有hasnext()方法?執行看右邊子類itr中是不是重寫有hasnext()方法?

然後就是方法體實現的事情了。。

迭代器Iterator原始碼分析

我們在遍歷乙個集合物件時經常會使用到迭代器iterator,它提供給我們獲取 刪除集合中元素的功能。iterator包含三個方法,分別是 1 hasnext 用於判斷迭代器是否已從頭到尾將集合遍歷了一遍,後面是否還有元素。2 next 用於獲取當前指向的元素。3 remove 刪除剛剛訪問過的元素。...

迭代器模式(Iterator)

迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中的各種元素,而又不暴露該物件的內部表示。當你需要訪問乙個聚合物件,而且不管這些物件是什麼都需要遍歷的時候,就應該考慮使用迭代器模式。另外,當需要對聚集有多種方式遍歷時,可以考慮去使用迭代器模式。迭代器模式為遍歷不同的聚集結構提供如開始 ...

迭代器模式(Iterator)

1.目的 當需要遍歷 單種方式或多種方式 遍歷乙個組合物件時,使用遍歷模式。該模式類似與將容器的介面進行封裝,不對外直接暴露容器的介面的做法類似。2.ifndef iterator h define iterator h include include using namespace std cla...