亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区
注冊
|
提交需求
|
訂閱
|
English
首 頁
解決方案
產(chǎn) 品
服 務
支 持
EDN系統(tǒng)
成功案例
關于我們
聯(lián)系我們
樹結構圖
EDN系統(tǒng)
圖形圖像
網(wǎng)絡安全
項目專題
WEB開發(fā)
辦公系列
操作系統(tǒng)
數(shù)據(jù)庫
程序設計
TOP 10
在Foxmail中如何使…
Ftp 子命令
BigDecimal
MSN在線客服功能模塊使…
會員卡使用方法說明
DataInputStr…
留言板功能說明
CScript
BufferedInpu…
設置打印機
您現(xiàn)在的位置:
>
技術沙龍
>
程序設計
>
Java
>
未分類
>
Java源碼分析:深入探討Iterator模式
相關軟件
>
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
相關文章
前一則:
java實現(xiàn)URL帶參數(shù)請求(get/post)
后一則:
避免重啟你的應用程序 一
本頁查看次數(shù):
公司公告
|
客戶調(diào)查
|
法律聲明
|
誠聘英才
|
給我們投稿
|
繁
閃
頭像
京ICP備05031245號
Copyright @ REDCOME.com ALL Rights Reserved
北京怡康軟件科技有限公司 地址:北京市昌平區(qū)東小口立湯路188號北方明珠大廈1號樓2708 郵編:102218 電話:84909966 傳真:84909900 QQ:335601661