資源描述:
《java集合類學習筆記.doc》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、集合1????????集合框架1.1????????集合框架概述1.1.1????????容器簡介到目前為止,我們已經(jīng)學習了如何創(chuàng)建多個不同的對象,定義了這些對象以后,我們就可以利用它們來做一些有意義的事情。??????舉例來說,假設要存儲許多雇員,不同的雇員的區(qū)別僅在于雇員的身份證號。我們可以通過身份證號來順序存儲每個雇員,但是在內存中實現(xiàn)呢?是不是要準備足夠的內存來存儲1000個雇員,然后再將這些雇員逐一插入?如果已經(jīng)插入了500條記錄,這時需要插入一個身份證號較低的新雇員,該怎么辦呢?是在內存中將5
2、00條記錄全部下移后,再從開頭插入新的記錄?還是創(chuàng)建一個映射來記住每個對象的位置?當決定如何存儲對象的集合時,必須考慮如下問題。??????對于對象集合,必須執(zhí)行的操作主要以下三種:u??????添加新的對象u??????刪除對象u??????查找對象我們必須確定如何將新的對象添加到集合中??梢詫ο筇砑拥郊系哪┪病㈤_頭或者中間的某個邏輯位置。從集合中刪除一個對象后,對象集合中現(xiàn)有對象會有什么影響呢?可能必須將內存移來移去,或者就在現(xiàn)有對象所駐留的內存位置下一個“洞”。??????在內存中建立對象集合后
3、,必須確定如何定位特定對象??山⒁环N機制,利用該機制可根據(jù)某些搜索條件(例如身份證號)直接定位到目標對象;否則,便需要遍歷集合中的每個對象,直到找到要查找的對象為止。??????前面大家已經(jīng)學習過了數(shù)組。數(shù)組的作用是可以存取一組數(shù)據(jù)。但是它卻存在一些缺點,使得無法使用它來比較方便快捷的完成上述應用場景的要求。1.????????首先,在很多數(shù)情況下面,我們需要能夠存儲一組數(shù)據(jù)的容器,這一點雖然數(shù)組可以實現(xiàn),但是如果我們需要存儲的數(shù)據(jù)的個數(shù)多少并不確定。比如說:我們需要在容器里面存儲某個應用系統(tǒng)的當前的所
4、有的在線用戶信息,而當前的在線用戶信息是時刻都可能在變化的。也就是說,我們需要一種存儲數(shù)據(jù)的容器,它能夠自動的改變這個容器的所能存放的數(shù)據(jù)數(shù)量的大小。這一點上,如果使用數(shù)組來存儲的話,就顯得十分的笨拙。2.????????我們再假設這樣一種場景:假定一個購物網(wǎng)站,經(jīng)過一段時間的運行,我們已經(jīng)存儲了一系列的購物清單了,購物清單中有商品信息。如果我們想要知道這段時間里面有多少種商品被銷售出去了。那么我們就需要一個容器能夠自動的過濾掉購物清單中的關于商品的重復信息。如果使用數(shù)組,這也是很難實現(xiàn)的。3.?????
5、???最后再想想,我們經(jīng)常會遇到這種情況,我知道某個人的帳號名稱,希望能夠進一步了解這個人的其他的一些信息。也就是說,我們在一個地方存放一些用戶信息,我們希望能夠通過用戶的帳號來查找到對應的該用戶的其他的一些信息。再舉個查字典例子:假設我們希望使用一個容器來存放單詞以及對于這個單詞的解釋,而當我們想要查找某個單詞的意思的時候,能夠根據(jù)提供的單詞在這個容器中找到對應的單詞的解釋。如果使用數(shù)組來實現(xiàn)的話,就更加的困難了。為解決這些問題,Java里面就設計了容器集合,不同的容器集合以不同的格式保存對象。?數(shù)學背
6、景在常見用法中,集合(collection)和數(shù)學上直觀的集(set)的概念是相同的。集是一個唯一項組,也就是說組中沒有重復項。實際上,“集合框架”包含了一個Set接口和許多具體的Set類。但正式的集概念卻比Java技術提前了一個世紀,那時英國數(shù)學家GeorgeBoole按邏輯正式的定義了集的概念。大部分人在小學時通過我們熟悉的維恩圖引入的“集的交”和“集的并”學到過一些集的理論。?集的基本屬性如下:u??????集內只包含每項的一個實例u??????集可以是有限的,也可以是無限的u??????可以定義抽
7、象概念集不僅是邏輯學、數(shù)學和計算機科學的基礎,對于商業(yè)和系統(tǒng)的日常應用來說,它也很實用?!斑B接池”這一概念就是數(shù)據(jù)庫服務器的一個開放連接集。Web服務器必須管理客戶機和連接集。文件描述符提供了操作系統(tǒng)中另一個集的示例。映射是一種特別的集。它是一種對(pair)集,每個對表示一個元素到另一元素的單向映射。一些映射示例有:u??????IP地址到域名(DNS)的映射u??????關鍵字到數(shù)據(jù)庫記錄的映射u??????字典(詞到含義的映射)u??????2進制到10進制轉換的映射就像集一樣,映射背后的思想比Ja
8、va編程語言早的多,甚至比計算機科學還早。而Java中的Map就是映射的一種表現(xiàn)形式。1.1.2???????容器的分類既然您已經(jīng)具備了一些集的理論,您應該能夠更輕松的理解“集合框架”?!凹峡蚣堋庇梢唤M用來操作對象的接口組成。不同接口描述不同類型的組。在很大程度上,一旦您理解了接口,您就理解了框架。雖然您總要創(chuàng)建接口特定的實現(xiàn),但訪問實際集合的方法應該限制在接口方法的使用上;因此,允許您更改基本的數(shù)據(jù)結構而不必改變其它代碼。