java中為什麼要使用迭代器

2021-05-23 21:42:26 字數 579 閱讀 5124

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

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

ruby** 

for(int i=0; i

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

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

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

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

為什麼瀏覽器中要使用字首

因為css的標準制定還未統一,在css2時代,有些瀏覽器廠商為支援某些寫法而保留的私有字首,在css3日益成熟的現在和以後,可能會統一使用標準,到時候就不用謝瀏覽器字首了 瀏覽器字首大多應用於移動端,在css樣式後跟特定的瀏覽器字首樣式,樣式內容不變 下面是主要瀏覽器的字首 firefox moz ...

C 中為什麼要使用斷言

斷言assert是僅在debug下有效的巨集,當其中的條件為假時,觸發錯誤提示。使用斷言的目的是捕捉不應該發生的非法情況。注意 不要混淆非法情況與錯誤情況之間的區別,後者的出現是因為 錯誤,是一定要作出處理的。如何使用 1 在函式的入口處,使用斷言檢查引數的有效性 合法性 2 在編寫函式時,要進行反...

React中為什麼要使用immutableJs

當父元件讀取子元件資料form,賦值給obj,然後對obj進行一些修改過程中,直接賦值就是淺拷貝,修改obj之後會影響form物件,也就會影響子元件中的form的值,這也就是js中的隱患,在react中向上層元件或者下層元件傳遞物件,很難保證這個物件是否會被修改,當不希望對form產生影響的時候,需...