資源描述:
《Java集合排序及java集合類詳解(Collection、List、Map、Set).doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、Java集合排序及java集合類詳解(Collection,List,Set,Map)摘要內(nèi)容Java里面最重要,最常用也就是集合一部分了。能夠用好集合和理解好集合對于做Java程序的開發(fā)擁有無比的好處。本文詳細(xì)解釋了關(guān)于Java中的集合是如何實現(xiàn)的,以及他們的實現(xiàn)原理。關(guān)鍵字:Collection,List,Set,Map,集合,框架。目錄1???????集合框架21.1???????集合框架概述21.1.1???????容器簡介21.1.2???????容器的分類51.2???????Collection61.2.1???????常用方法61.2.2???????迭代器91.3????
2、???List111.3.1???????概述111.3.2???????常用方法121.3.3???????實現(xiàn)原理171.4???????Map201.4.1???????概述201.4.2???????常用方法211.4.3???????Comparable接口271.4.4???????實現(xiàn)原理291.4.5???????覆寫hashCode()341.5???????Set391.5.1???????概述391.5.2???????常用方法391.5.3???????實現(xiàn)原理451.6???????總結(jié):集合框架中常用類比較462???????練習(xí)473???????附錄:排序4
3、8青菜制作qq:8339511012/7/20095:17PM1???????集合框架1.1???????集合框架概述1.1.1???????容器簡介到目前為止,我們已經(jīng)學(xué)習(xí)了如何創(chuàng)建多個不同的對象,定義了這些對象以后,我們就可以利用它們來做一些有意義的事情。舉例來說,假設(shè)要存儲許多雇員,不同的雇員的區(qū)別僅在于雇員的身份證號。我們可以通過身份證號來順序存儲每個雇員,但是在內(nèi)存中實現(xiàn)呢?是不是要準(zhǔn)備足夠的內(nèi)存來存儲1000個雇員,然后再將這些雇員逐一插入?如果已經(jīng)插入了500條記錄,這時需要插入一個身份證號較低的新雇員,該怎么辦呢?是在內(nèi)存中將500條記錄全部下移后,再從開頭插入新的記錄?還
4、是創(chuàng)建一個映射來記住每個對象的位置?當(dāng)決定如何存儲對象的集合時,必須考慮如下問題。對于對象集合,必須執(zhí)行的操作主要以下三種:u??????添加新的對象u??????刪除對象u??????查找對象我們必須確定如何將新的對象添加到集合中。可以將對象添加到集合的末尾、開頭或者中間的某個邏輯位置。從集合中刪除一個對象后,對象集合中現(xiàn)有對象會有什么影響呢?可能必須將內(nèi)存移來移去,或者就在現(xiàn)有對象所駐留的內(nèi)存位置下一個“洞”。在內(nèi)存中建立對象集合后,必須確定如何定位特定對象??山⒁环N機(jī)制,利用該機(jī)制可根據(jù)某些搜索條件(例如身份證號)直接定位到目標(biāo)對象;否則,便需要遍歷集合中的每個對象,直到找到要查找
5、的對象為止。前面大家已經(jīng)學(xué)習(xí)過了數(shù)組。數(shù)組的作用是可以存取一組數(shù)據(jù)。但是它卻存在一些缺點,使得無法使用它來比較方便快捷的完成上述應(yīng)用場景的要求。1.????????青菜制作qq:8339511012/7/20095:17PM首先,在很多數(shù)情況下面,我們需要能夠存儲一組數(shù)據(jù)的容器,這一點雖然數(shù)組可以實現(xiàn),但是如果我們需要存儲的數(shù)據(jù)的個數(shù)多少并不確定。比如說:我們需要在容器里面存儲某個應(yīng)用系統(tǒng)的當(dāng)前的所有的在線用戶信息,而當(dāng)前的在線用戶信息是時刻都可能在變化的。也就是說,我們需要一種存儲數(shù)據(jù)的容器,它能夠自動的改變這個容器的所能存放的數(shù)據(jù)數(shù)量的大小。這一點上,如果使用數(shù)組來存儲的話,就顯得十分
6、的笨拙。2.????????我們再假設(shè)這樣一種場景:假定一個購物網(wǎng)站,經(jīng)過一段時間的運(yùn)行,我們已經(jīng)存儲了一系列的購物清單了,購物清單中有商品信息。如果我們想要知道這段時間里面有多少種商品被銷售出去了。那么我們就需要一個容器能夠自動的過濾掉購物清單中的關(guān)于商品的重復(fù)信息。如果使用數(shù)組,這也是很難實現(xiàn)的。3.????????最后再想想,我們經(jīng)常會遇到這種情況,我知道某個人的帳號名稱,希望能夠進(jìn)一步了解這個人的其他的一些信息。也就是說,我們在一個地方存放一些用戶信息,我們希望能夠通過用戶的帳號來查找到對應(yīng)的該用戶的其他的一些信息。再舉個查字典例子:假設(shè)我們希望使用一個容器來存放單詞以及對于這個單
7、詞的解釋,而當(dāng)我們想要查找某個單詞的意思的時候,能夠根據(jù)提供的單詞在這個容器中找到對應(yīng)的單詞的解釋。如果使用數(shù)組來實現(xiàn)的話,就更加的困難了。為解決這些問題,Java里面就設(shè)計了容器集合,不同的容器集合以不同的格式保存對象。數(shù)學(xué)背景在常見用法中,集合(collection)和數(shù)學(xué)上直觀的集(set)的概念是相同的。集是一個唯一項組,也就是說組中沒有重復(fù)項。實際上,“集合框架”包含了一個Set接口和許多具體的Set類。但正式