我所了解的Iterator設(shè)計(jì)模式

容器的可替換性


底層容器實(shí)現(xiàn)可以隨意改變,而對用戶的使用不產(chǎn)生影響薯鼠,說白了郎任,就是要統(tǒng)一接口颖医,畢竟開發(fā)者只需要面向接口編程


Iterator設(shè)計(jì)思想


怎么給容器提供一種遍歷方式?你可能會認(rèn)為不就是個遍歷嗎冀续?ArrayList用數(shù)組下標(biāo)進(jìn)行遍歷琼讽,LinkedList也難怪指針next進(jìn)行遍歷。事實(shí)上洪唐,沒那么簡單钻蹬。如果底層的容器實(shí)現(xiàn)變化了,用戶的使用是不是也需要根據(jù)具體實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)來改變遍歷方式呢凭需?顯然不行问欠,不然何必統(tǒng)一接口肝匆。說到這里,你一定知道了Iterator就是一個統(tǒng)計(jì)遍歷的接口


Iterator的幾個角色


1.迭代器Iterator接口

2.迭代器Iterator的實(shí)現(xiàn)類顺献,要求重寫hasNext(),next(),remove()三個方法

3.容器統(tǒng)一接口旗国,要求有一個返回Iterator接口的方法

4.容器實(shí)現(xiàn)類,實(shí)現(xiàn)一個返回Iterator接口的方法

ArrayList的Iterator實(shí)現(xiàn)同樣重寫了hasNext()注整,next()能曾,remove()


modCount


迭代器Iterator允許在容器遍歷的時候?qū)υ剡M(jìn)行刪除,這樣產(chǎn)生了一個問題肿轨,當(dāng)多線程操作容器的時候寿冕,在用Iterator對容器遍歷的同時,其他線程可能已經(jīng)改變了該容器的內(nèi)容(add椒袍,驼唱,remove等操作),所以每次對容器內(nèi)容的更改操作(add驹暑,remove等)都會使modCount + 1玫恳,這樣相當(dāng)于樂觀鎖的版本號+1,當(dāng)在Iterator遍歷中remove時檢查到modCount發(fā)生了變化岗钩,馬上拋出ConcurrentModificationException纽窟,這就是java中容器中的“fail-fast”機(jī)制


樂觀鎖


一般是通過為數(shù)據(jù)庫增加一個“version”字段。讀取數(shù)據(jù)時連同版本號一同讀出兼吓,之后更新時臂港,對比版本號+1.此時將提交的數(shù)據(jù)的版本的數(shù)據(jù)與數(shù)據(jù)庫對應(yīng)記錄的當(dāng)前版本信息進(jìn)行比對,如果提交數(shù)據(jù)版本號大于數(shù)據(jù)庫表當(dāng)前版本號則予以更新视搏,否則审孽,認(rèn)為是過期數(shù)據(jù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市浑娜,隨后出現(xiàn)的幾起案子佑力,更是在濱河造成了極大的恐慌,老刑警劉巖筋遭,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件打颤,死亡現(xiàn)場離奇詭異,居然都是意外死亡漓滔,警方通過查閱死者的電腦和手機(jī)编饺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來响驴,“玉大人透且,你說我怎么就攤上這事』砝穑” “怎么了秽誊?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵鲸沮,是天一觀的道長。 經(jīng)常有香客問我锅论,道長讼溺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任棍厌,我火速辦了婚禮肾胯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘耘纱。我一直安慰自己敬肚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布束析。 她就那樣靜靜地躺著艳馒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪员寇。 梳的紋絲不亂的頭發(fā)上弄慰,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天,我揣著相機(jī)與錄音蝶锋,去河邊找鬼陆爽。 笑死,一個胖子當(dāng)著我的面吹牛扳缕,可吹牛的內(nèi)容都是我干的慌闭。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼躯舔,長吁一口氣:“原來是場噩夢啊……” “哼驴剔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粥庄,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤丧失,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后惜互,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體布讹,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年训堆,在試婚紗的時候發(fā)現(xiàn)自己被綠了炒事。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蔫慧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出权薯,到底是詐尸還是另有隱情姑躲,我是刑警寧澤睡扬,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站黍析,受9級特大地震影響卖怜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阐枣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一马靠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔼两,春花似錦甩鳄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至俊戳,卻和暖如春揖赴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抑胎。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工燥滑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阿逃。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓铭拧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盆昙。 傳聞我的和親對象是個殘疾皇子羽历,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 1 場景問題# 1.1 工資表數(shù)據(jù)的整合## 考慮這樣一個實(shí)際應(yīng)用:整合工資表數(shù)據(jù)。 這個項(xiàng)目的背景是這樣的淡喜,項(xiàng)目...
    七寸知架構(gòu)閱讀 2,537評論 0 53
  • 1.HashMap是一個數(shù)組+鏈表/紅黑樹的結(jié)構(gòu)秕磷,數(shù)組的下標(biāo)在HashMap中稱為Bucket值,每個數(shù)組項(xiàng)對應(yīng)的...
    誰在烽煙彼岸閱讀 1,018評論 2 2
  • 之前在西安讀書的時候是窮學(xué)生一枚炼团,沒怎么打過車澎嚣,而且西安也不怎么大,即使打車也很快就到了瘟芝,所以也沒怎么和出租車...
    綠蘿文竹閱讀 208評論 0 0
  • 短短一周的見習(xí)結(jié)束了易桃,但給我留下深刻印象的不僅僅是這群天真爛漫的小可愛們,更是這個小小學(xué)校特別的教育模式锌俱。 一...
    江畔暮雨077閱讀 147評論 0 0
  • 昨天晚上,在“劉鐵芳人文教育團(tuán)隊(duì)”微信群里造寝,被踢磕洪。 這是2017年,在微信群里第三次挨踢诫龙。年終歲尾析显,借此回顧總結(jié)一...
    高手如林閱讀 3,022評論 6 6