是誰實現(xiàn)了Iterator接口?

             如果應用Java集合框架,很多時候都會用到Iterator接口類型的對象對集合中的元素進行遍歷。但尋遍Java API幫助文檔,卻找不到任何類實現(xiàn)了Iterator接口。那么到底是誰實現(xiàn)了這個接口呢?

          其實,因為不同集合實現(xiàn)類后臺工作的數(shù)據(jù)結(jié)構(gòu)有所不同,所以沒有辦法用一個類來實現(xiàn)Iterator接口,可以使之適用于所有集合。這樣,實現(xiàn)Iterator接口的任務(wù)就落到了集合實現(xiàn)類自己身上。

          由于實現(xiàn)了Iterator接口的類僅與具體的集合實現(xiàn)類有關(guān),所以這個類被設(shè)計成了私有的內(nèi)部類,也正因為這樣我們在幫助文檔中看不到這個類的說明。

          下面以數(shù)組實現(xiàn)的線性表為例,做一個簡單的演示,相信看過了這段代碼,大家就會清楚了。

          說明:我們這里主要是講解Iterator接口的使用,所以在這個例子中只提供了add和get兩個方法,以減少代碼,便于大家閱讀。

          package javase.study.oldboy;

          import java.util.Iterator;
          public class OurArrayList<E> implements Iterable<E> {
              
          private E[] datas;
              
          private int size;

              
          public OurArrayList() {
                  
          this(16);
              }


              @SuppressWarnings(
          "unchecked")
              
          public OurArrayList(int capacity) {
                  datas 
          = (E[]) new Object[capacity];
                  size 
          = 0;
              }


              @SuppressWarnings(
          "unchecked")
              
          public void add(int index, E obj) {
                  
          if (size >= datas.length) {
                      E[] newData 
          = (E[]) new Object[datas.length * 2 + 1];
                      System.arraycopy(datas, 
          0, newData, 0, datas.length);
                      datas 
          = newData;
                  }


                  
          for (int i = size - 1; i >= index; i--)
                      datas[i 
          + 1= datas[i];
                  datas[index] 
          = obj;
                  size
          ++;
              }


              
          public E get(int index) {
                  
          if (index < size) {
                      
          return (E) datas[index];
                  }
           else
                      
          return null;
              }


              
          public Iterator<E> iterator() {

                  return new Itr<E>();
              
           }
                
                private class Itr implements Iterator {
                  int count = 0;
                 
          public boolean hasNext() {
                     
          return count < size;
                 }


                
          public E next() {
                     
          return get(count++);
                 }


                 @Override
                
          public void remove() {
                     
          // TODO Auto-generated method stub
                 }


                }
          }



          ----------------------------------
          把人做到寬容,把技術(shù)做到強悍。

          posted on 2008-03-28 12:29 OldBoy 閱讀(879) 評論(2)  編輯  收藏 所屬分類: Java基礎(chǔ)

          評論

          # re: 是誰實現(xiàn)了Iterator接口? 2008-12-07 13:10 T

          果然如此,和我想的一樣  回復  更多評論   

          # re: 是誰實現(xiàn)了Iterator接口? 2009-06-18 19:03 xiaoman

          天哪,這都是什么東東???  回復  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統(tǒng)計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永泰县| 四子王旗| 宁晋县| 监利县| 洮南市| 新疆| 五寨县| 城步| 武夷山市| 柞水县| 张北县| 林口县| 连平县| 江永县| 双流县| 泾源县| 当雄县| 航空| 清苑县| 延长县| 南江县| 濮阳市| 白山市| 东光县| 湄潭县| 福州市| 建昌县| 前郭尔| 宁乡县| 葫芦岛市| 同心县| 肥西县| 时尚| 桃源县| 乌鲁木齐市| 堆龙德庆县| 湘潭县| 三原县| 龙胜| 榆树市| 安达市|