學習筆記之 Iterator 容器與容器遍歷

2021-09-02 12:34:54 字數 1389 閱讀 4478

[color=red]容器:[/color]就是能夠容納其他元素這樣的物件叫著容器,也就是說:容器也是乙個物件

我們想寫乙個容器的話(可以用陣列或者鍊錶來模擬乙個容器),它應該具備乙個add方法,

用陣列模擬容器和陣列直接裝東西相比, 好處就是不用在考慮陣列邊界的問題了可以動態增長,想往裡頭裝東西直接裝就是了 想知道裝多少,調它的size()方法就行

如果我不想用array這個容器來裝東西了 我想用另外乙個容器,這個容器的底層實現用鍊錶

鍊錶: 鍊錶裡面裝的是乙個乙個的節點,

每個節點裡面裝的是兩部分內容(資料本身, 指向下乙個節點的乙個引用)

linklist裡面裝的是一大堆的node 寫乙個node陣列? 千萬別 記得開始的節點 順著引用就可以找到最後的節點

考慮容器的可替換性: 把兩個容器對外公開的方法統一起來 比如add size

iterator iterator()

寫乙個介面 裡面有那兩個方法的定義 面向介面程式設計 針對collection進行程式設計 方法具體的實現不去管它

對於容器經常使用的方法就是[size=x-large]遍歷[/size],對於[size=x-large]遍歷[/size]的方式如果不能夠統一的話,那針對介面程式設計就是無意義(arraylist(迴圈) 和linklist(不斷的next)的遍歷方式不同)

每一種容器都有乙個自己的遍歷方式,而這個遍歷方式我要想方設法的統一起來,由於底層的實現方式不同,所以只能用一種介面的方式給統一起來 iterator

[color=red]iterator[/color]介面裡面定義這兩個方法object next();boolean hasnext();

有了這個介面以後,這個接**給我們容器類的物件去實現

我要求任何乙個容器都必須給我乙個實現了這個[color=darkred]介面的類的物件[/color]

[color=red]public iterator iterator()

private class arraylistiterator implements iterator{}[/color]這類裡面實現了interator介面的方法 作為實現了interator類的物件給返回過去

這樣我們遍歷容器的時候[color=red]iterator it = c.iterator();[/color] 可以用呼叫[color=blue]iterator[/color]方法用返回值[size=large]it[/size]來遍歷(返回值[size=large]it[/size] 是乙個[color=darkred]實現了[color=blue]interator[/color]介面的物件[/color] 有遍歷所以容器共有的方法).

[color=violet]iterator it = c.iterator();

while(it.hasnext()) [/color]

C 學習筆記之容器

list 和 vector 2者都屬於容器,但list只有雙向迭代器,而vector卻有隨機訪問迭代器 迭代器的種類 前向迭代器 forward iterator 可對迭代器進行 操作雙向迭代器 bidirectional iterator 可對迭代器進行 和 操作隨機訪問迭代器 random ac...

容器學習筆記之CPU Cgroup

我們知道,cgroups可以限制容器資源,比如cpu memory storage network等。最近學習了cpu cgroup中三個重要的引數 cpu.cfs quota us,cpu.cfs period us和cpu.shares。在說明這幾個引數的意義和作用之前,先了解一下cpu各種狀態...

Python 學習筆記 關於 Iterator

iterator 是 迭代器 的意思,iterator 與 iterable 物件 不同。從字面上理解,迭代器 與 可迭代物件 當然不同。從性質上理解,iterable 實際上是乙個惰性序列,需要用 next 來計算序列的下乙個內容,也可以使用 for 迴圈遍歷 如果有界的話 而 iterable ...