1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Java中怎么實現(xiàn)迭代器模式

      本篇文章給大家分享的是有關Java中怎么實現(xiàn)迭代器模式,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

      創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、東莞網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5頁面制作商城網(wǎng)站建設、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為東莞等各大城市提供網(wǎng)站開發(fā)制作服務。

      迭代器模式定義

      迭代器模式(Iterator),提供一種方法順序訪問一個聚合對象中的各種元素,而又不暴露該對象的內(nèi)部表示。

      迭代器模式的角色構(gòu)成

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

      (2)具體迭代器角色(Concrete Iterator):實現(xiàn)迭代器接口中定義的方法,完成集合的迭代。

      (3)容器角色(Aggregate):  一般是一個接口,提供一個iterator()方法,例如java中的Collection接口,List接口,Set接口等

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

      迭代器模式應用的場景及意義

      (1)訪問一個聚合對象的內(nèi)容而無需暴露它的內(nèi)部表示

      (2)支持對聚合對象的多種遍歷

      (3)為遍歷不同的聚合結(jié)構(gòu)提供一個統(tǒng)一的接口

      迭代器模式四個角色之間的關系可以用類圖表示

       Java中怎么實現(xiàn)迭代器模式

      具體代碼實現(xiàn):

      定義迭代器角色(Iterator)

       public interface Iterator {

           public boolean hasNext();

           public Object next();

       }

      定義具體迭代器角色(Concrete Iterator)

       package patten.design;

       import patten.design.List;;

       public class ConcreteIterator implements Iterator {

           private List list = null;

           private int index;

           public ConcreteIterator(List list) {

               super();

               this.list = list;

           }

           @Override

           public boolean hasNext() {

               if (index >= list.getSize()) {

                   return false;

               } else {

                   return true;

               }

           }

           @Override

           public Object next() {

               Object object = list.get(index);

               index++;

               return object;

           }

       }

      定義容器角色(Aggregate)

       package patten.design;

       //定義集合可以進行的操作

       public interface List {

           public void add(Object obj);  

           public Object get(int index);

           public Iterator iterator();  

           public int getSize();

       }

      定義具體容器角色(ConcreteAggregate)

       package patten.design;

       public class ConcreteAggregate implements List{

           private Object[] list;

           private int size=0;

           private int index=0;

           public ConcreteAggregate(){

               index=0;

               size=0;

               list=new Object[100];

           }

           @Override

           public void add(Object obj) {

               list[index++]=obj;

               size++;

           }

           @Override

           public Iterator iterator() {

               return new ConcreteIterator(this);

           }

           @Override

           public Object get(int index) {

               return list[index];

           }

           @Override

           public int getSize() {

               return size;

           }

       }

      代碼測試

       package patten.design;

       public class IteratorTest {

           /**

            * @param args

            */

           public static void main(String[] args) {

               List list=new ConcreteAggregate();

               list.add("a");

               list.add("b");

               list.add("c");

               list.add("d");

               Iterator it=list.iterator();

               while(it.hasNext()){

                   System.out.println(it.next());

               }

           }

       }

      迭代器模式的優(yōu)缺點:

        迭代器模式的優(yōu)點有:

      簡化了遍歷方式,對于對象集合的遍歷,還是比較麻煩的,對于數(shù)組或者有序列表,我們尚可以通過游標來取得,但用戶需要在對集合了解很清楚的前提下,自行遍歷對象,但是對于hash表來說,用戶遍歷起來就比較麻煩了。而引入了迭代器方法后,用戶用起來就簡單的多了。

      可以提供多種遍歷方式,比如說對有序列表,我們可以根據(jù)需要提供正序遍歷,倒序遍歷兩種迭代器,用戶用起來只需要得到我們實現(xiàn)好的迭代器,就可以方便的對集合進行遍歷了。

      封裝性良好,用戶只需要得到迭代器就可以遍歷,而對于遍歷算法則不用去關心。

        迭代器模式的缺點:

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

       總的來說: 迭代器模式是與集合共生共死的,一般來說,我們只要實現(xiàn)一個集合,就需要同時提供這個集合的迭代器,就像java中的Collection,List、Set、Map等,這些集合都有自己的迭代器。假如我們要實現(xiàn)一個這樣的新的容器,當然也需要引入迭代器模式,給我們的容器實現(xiàn)一個迭代器。


      以上就是Java中怎么實現(xiàn)迭代器模式,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


      標題名稱:Java中怎么實現(xiàn)迭代器模式
      分享網(wǎng)址:http://www.ef60e0e.cn/article/ihiiis.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        华池县| 瑞金市| 巴林左旗| 长治市| 华池县| 绵竹市| 桐庐县| 鄂伦春自治旗| 乌鲁木齐县| 东乡族自治县| 呼玛县| 宁晋县| 南汇区| 翁牛特旗| 德令哈市| 马公市| 库车县| 新乐市| 陆河县| 石城县| 昌邑市| 安康市| 柞水县| 府谷县| 任丘市| 泰安市| 沙洋县| 甘谷县| 惠东县| 益阳市| 银川市| 崇义县| 城市| 洱源县| 湾仔区| 改则县| 襄垣县| 资源县| 东海县| 保亭| 新乐市|