亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区

  • 相關軟件
    >Java源碼分析:深入探討Iterator模式 創(chuàng)建者:webmaster 更新時間:2005-05-16 21:54

    java.util包中包含了一系列重要的集合類。本文將從分析源碼入手,深入研究一個集合類的內(nèi)部結構,以及遍歷集合的迭代模式的源碼實現(xiàn)內(nèi)幕。   下面我們先簡單討論一個根接口Collection,然后分析一個抽象類AbstractList和它的對應Iterator接口,并仔細研究迭代子模式的實現(xiàn)原理。   本文討論的源代碼版本是JDK 1.4.2,因為JDK 1.5在java.util中使用了很多泛型代碼,為了簡化問題,所以我們還是討論1.4版本的代碼。   集合類的根接口Collection   Collection接口是所有集合類的根類型。它的一個主要的接口方法是: boolean add(Object c)   add()方法將添加一個新元素。注意這個方法會返回一個boolean,但是返回值不是表示添加成功與否。仔細閱讀doc可以看到,Collection規(guī)定:如果一個集合拒絕添加這個元素,無論任何原因,都必須拋出異常。這個返回值表示的意義是add()方法執(zhí)行后,集合的內(nèi)容是否改變了(就是元素有無數(shù)量,位置等變化),這是由具體類實現(xiàn)的。即:如果方法出錯,總會拋出異常;返回值僅僅表示該方法執(zhí)行后這個Collection的內(nèi)容有無變化。   類似的還有: boolean addAll(Collection c); boolean remove(Object o); boolean removeAll(Collection c); boolean remainAll(Collection c);   Object[] toArray()方法很簡單,把集合轉換成數(shù)組返回。Object[] toArray(Object[] a)方法就有點復雜了,首先,返回的Object[]仍然是把集合的所有元素變成的數(shù)組,但是類型和參數(shù)a的類型是相同的,比如執(zhí)行: String[] o = (String[])c.toArray(new String[0]);   得到的o實際類型是String[]。   其次,如果參數(shù)a的大小裝不下集合的所有元素,返回的將是一個新的數(shù)組。如果參數(shù)a的大小能裝下集合的所有元素,則返回的還是a,但a的內(nèi)容用集合的元素來填充。尤其要注意的是,如果a的大小比集合元素的個數(shù)還多,a后面的部分全部被置為null。   最后一個最重要的方法是iterator(),返回一個Iterator(迭代子),用于遍歷集合的所有元素。   用Iterator模式實現(xiàn)遍歷集合   Iterator模式是用于遍歷集合類的標準訪問方法。它可以把訪問邏輯從不同類型的集合類中抽象出來,從而避免向客戶端暴露集合的內(nèi)部結構。   例如,如果沒有使用Iterator,遍歷一個數(shù)組的方法是使用索引: for(int i=0; i相關文章
    本頁查看次數(shù):