為什麼要在JAVA,C 等集合中引入迭代器

2021-07-06 04:40:47 字數 561 閱讀 4880

迭代模式是訪問集合類的通用方法,只要集合類實現了iterator介面,就可以用迭代的方式來訪問集合類內部的資料,iterator訪問方式把對不同集合類的訪問邏輯抽象出來,使得不用暴露集合內部的結構而達到迴圈遍歷集合的效果。 

例如,如果沒有使用iterator,遍歷乙個陣列的方法是使用索引:

for(int i=0; i

這種方法的缺點就是事先必須知道集合的資料結構,而且當我換了一種集合的話**不可重用,要修改,比如我用set,就不能通過索引來遍歷了。訪問**和集合是緊耦合,無法將訪問邏輯從集合類和客戶端**中剝離出來,每一種集合類對應一種訪問方式,**不可重用。 

為解決以上問題,iterator模式總是用同一種邏輯來遍歷集合。 

每一種集合類返回的iterator具體型別可能不同,array可能返回arrayiterator,set可能返回setiterator,tree 可能返回treeiterator,但是它們都實現了iterator介面,因此,客戶端不關心到底是哪種iterator,它只需要獲得這個 iterator介面即可,這就是物件導向的威力。 

這就是針對抽象程式設計的原則:對具體類的依賴性最小。

訊號中為什麼引入卷積

卷積第一次出現應該是訊號系統中系統的時域分析一章,卷積貫穿了系統的時域分析,因此理解了卷積的概念對於理解系統的時域分析至關重要。今天就來看看卷積的來龍去脈,它是怎麼被引入的?先補充一下訊號分解的預備知識。訊號的分解方式 直流分量和交流分量 奇分量和偶分量 衝激訊號的疊加 實部分量和虛部分量,正交函式...

c 中為什麼會引入const

c 的提出者當初是基於什麼樣的目的引入 或者說保留 const關鍵字呢?這是乙個有趣又有益的話題,對理解const很有幫助。1 大家知道,c 有乙個型別嚴格的編譯系統,這使得c 程式的錯誤在編譯階段即 可發現許多,從而使得出錯率大為減少,因此,也成為了c 與c相比,有著突出優點 的乙個方面。2 c中...

java中為什麼要使用迭代器

迭代模式是訪問集合類的通用方法,只要集合類實現了iterator介面,就可以用迭代的方式來訪問集合類內部的資料,iterator訪問方式把對不同集合類的訪問邏輯抽象出來,使得不用暴露集合內部的結構而達到迴圈遍歷集合的效果。例如,如果沒有使用iterator,遍歷乙個陣列的方法是使用索引 ruby f...