黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 如何學習Java設(shè)計模式:迭代器

如何學習Java設(shè)計模式:迭代器

更新時間:2020-01-08 15:08:30 來源:動力節(jié)點 瀏覽3020次


  定義:提供一種方法訪問一個容器對象中各個元素,而又不暴露該對象的內(nèi)部細節(jié)。


  類型:行為類模式


  類圖:


如何學習Java設(shè)計模式:迭代器


  如果要問java中使用最多的一種模式,答案不是單例模式,也不是工廠模式,更不是策略模式,而是迭代器模式,先來看一段代碼吧:


       如何學習Java設(shè)計模式:迭代器


  這個方法的作用是循環(huán)打印一個字符串集合,里面就用到了迭代器模式,java語言已經(jīng)完整地實現(xiàn)了迭代器模式,Iterator翻譯成漢語就是迭代器的意思。提到迭代器,首先它是與集合相關(guān)的,集合也叫聚集、容器等,我們可以將集合看成是一個可以包容對象的容器,例如List,Set,Map,甚至數(shù)組都可以叫做集合,而迭代器的作用就是把容器中的對象一個一個地遍歷出來。


  迭代器模式的結(jié)構(gòu)


  抽象容器:一般是一個接口,提供一個iterator()方法,例如java中的Collection接口,List接口,Set接口等。


  具體容器:就是抽象容器的具體實現(xiàn)類,比如List接口的有序列表實現(xiàn)ArrayList,List接口的鏈表實現(xiàn)LinkList,Set接口的哈希列表的實現(xiàn)HashSet等。


  抽象迭代器:定義遍歷元素所需要的方法,一般來說會有這么三個方法:取得第一個元素的方法first(),取得下一個元素的方法next(),判斷是否遍歷結(jié)束的方法isDone()(或者叫hasNext()),移出當前對象的方法remove(),


  迭代器實現(xiàn):實現(xiàn)迭代器接口中定義的方法,完成集合的迭代。


  代碼實現(xiàn)


       如何學習Java設(shè)計模式:迭代器

       如何學習Java設(shè)計模式:迭代器


  上面的代碼中,Aggregate是容器類接口,大家可以想象一下Collection,List,Set等,Aggregate就是他們的簡化版,容器類接口中主要有三個方法:添加對象方法add、刪除對象方法remove、取得迭代器方法iterator。Iterator是迭代器接口,主要有兩個方法:取得迭代對象方法next,判斷是否迭代完成方法hasNext,大家可以對比java.util.List和java.util.Iterator兩個接口自行思考。


  迭代器模式的優(yōu)點:簡化了遍歷方式,對于對象集合的遍歷,還是比較麻煩的,對于數(shù)組或者有序列表,我們尚可以通過游標來取得,但用戶需要在對集合了解很清楚的前提下,自行遍歷對象,但是對于hash表來說,用戶遍歷起來就比較麻煩了。而引入了迭代器方法后,用戶用起來就簡單的多了。可以提供多種遍歷方式,比如說對有序列表,我們可以根據(jù)需要提供正序遍歷,倒序遍歷兩種迭代器,用戶用起來只需要得到我們實現(xiàn)好的迭代器,就可以方便的對集合進行遍歷了。封裝性良好,用戶只需要得到迭代器就可以遍歷,而對于遍歷算法則不用去關(guān)心。


  迭代器模式的缺點:對于比較簡單的遍歷(像數(shù)組或者有序列表),使用迭代器方式遍歷較為繁瑣,大家可能都有感覺,像ArrayList,我們寧可愿意使用for循環(huán)和get方法來遍歷集合。


  迭代器模式的適用場景迭代器模式是與集合共生共死的,一般來說,我們只要實現(xiàn)一個集合,就需要同時提供這個集合的迭代器,就像java中的Collection,List、Set、Map等,這些集合都有自己的迭代器。假如我們要實現(xiàn)一個這樣的新的容器,當然也需要引入迭代器模式,給我們的容器實現(xiàn)一個迭代器。但是,由于容器與迭代器的關(guān)系太密切了,所以大多數(shù)語言在實現(xiàn)容器的時候都給提供了迭代器,并且這些語言提供的容器和迭代器在絕大多數(shù)情況下就可以滿足我們的需要,所以現(xiàn)在需要我們自己去實踐迭代器模式的場景還是比較少見的,我們只需要使用語言中已有的容器和迭代器就可以了。


如何學習Java設(shè)計模式:迭代器


       以上就是動力節(jié)點Java培訓機構(gòu)小編介紹的“如何學習Java設(shè)計模式:迭代器”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。


  相關(guān)內(nèi)容


  高級java面試題及答案(集合專題)


  必讀:Java高級架構(gòu)師學習書籍


  java設(shè)計模式面試題及答案


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产在线观看成人免费视频 | 国产成人无精品久久久久国语 | 亚洲丁香色婷婷综合欲色啪 | 欧美一区二区三区久久综合 | 伊人免费在线 | 精品手机在线视频 | 狠狠狠很橹影院 | www.国产成人 | 亚洲精品第1页 | 在线中文字幕亚洲 | 国产一级视频免费 | 色天天综合色天天看 | 亚洲色欲色欲综合网站 | 成人免费大片a毛片 | 国产精品亚洲专区在线观看 | 免费看美女毛片 | 英国一级黄色片 | 成人影院天天5g天天爽无毒影院 | 日韩字幕在线 | 99精品视频在线观看re | 日本爽爽爽爽爽爽在线观看免 | 日韩视频亚洲 | 午夜寂寞网站 | 高清视频黄色录像免费 | 青青草成人影视 | 91国内精品久久久久免费影院 | 美女被羞羞网站 | 亚洲成a人片在线观看精品 亚洲成a人片在线观看中 | 午夜官网 | jizz国产丝袜18老师美女 | 免费国产成人高清在线观看麻豆 | 综合久久影院 | 亚洲伊人天堂 | 久久精品视频免费 | 免费黄色在线视频 | 欧美日韩高清在线观看 | 欧美日韩在线视频专区免费 | 在线观看a视频 | 一级毛片视频播放 | 久久er国产精品免费观看1 | 一级高清毛片免费a级高清毛片 |