Java集合框架總結(jié)_第1頁(yè)
Java集合框架總結(jié)_第2頁(yè)
Java集合框架總結(jié)_第3頁(yè)
Java集合框架總結(jié)_第4頁(yè)
Java集合框架總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第第頁(yè)Java集合框架總結(jié)Java的集合框架總結(jié)

JAVA集合框架

一、集合框架

在實(shí)際開發(fā)中,需要將對(duì)象依據(jù)不同的需求而存儲(chǔ)在特定的數(shù)據(jù)結(jié)構(gòu)容器中。但是數(shù)組雖然是一種用來(lái)存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),但是它的局限性很低,很難滿意各種的需求,所以JDK涌現(xiàn)了用來(lái)滿意各種需求的框架——集合框架。

“集合框架”主要由一組用來(lái)操作對(duì)象的接口組成。不同接口描述一組不同數(shù)據(jù)類型。常見(jiàn)的集合類有:1〕實(shí)現(xiàn)Collection接口的:List接口、Set接口。

2〕實(shí)現(xiàn)Map接口的。

二、Collection接口

Collection接口表示了如何把一組對(duì)象作為它的元素。JDK沒(méi)有徑直提供Collection接口的實(shí)現(xiàn),Collection接口的實(shí)現(xiàn)依靠于兩個(gè)繼承自自己的接口:Set和List。全部通過(guò)實(shí)現(xiàn)Collection接口的子接口的類應(yīng)當(dāng)提供兩個(gè)標(biāo)準(zhǔn)的構(gòu)造器:一個(gè)不需要參數(shù)的構(gòu)造器,用來(lái)創(chuàng)建一個(gè)空的集合,另外一個(gè)需要一個(gè)類型作為參數(shù)的構(gòu)造器,用來(lái)創(chuàng)建一個(gè)和參數(shù)的類型相同的元素的集合。

intsize():返回這個(gè)集合中的元素的數(shù)量。

booleanisEmpty():返回集合是否包含元素,假如沒(méi)有的話,返回true。booleancontains(Ee):假如這個(gè)集合包含某個(gè)指定的元素,返回true。

IteratorEiterator():返回這個(gè)集合中的全部元素的迭代。

booleanadd(Ee):向集合中添加新的元素,假如添加勝利,返回true。

booleanremove(Ee):從集合中刪除指定元素,假如刪除勝利,返回true。

booleancontainsAll(Collection?c):這個(gè)集合是否包含指定集合中的全部的元素。booleanaddAll(Collection?e*tendsEc):添加指定的集合中的全部元素到這個(gè)集合中。

booleanremoveAll(Collection?c):刪除當(dāng)前集合中與給定集合相同的元素。在這個(gè)調(diào)用返回之后,這個(gè)集合將不包含和指定的集合一樣的元素。

booleanretainAll(Collection?c):從這個(gè)集合中刪除全部不包含在指定的集合中的全部元素。

TT[]toArray(T[]a):返回一個(gè)包含集合中全部的元素的數(shù)組。

voidclear():從集合中刪除全部的元素。

booleanequals(Objectobj):比較這個(gè)集合和指定對(duì)象是否相等。

inthashCode():返回這個(gè)集合的哈希值。

三、List接口

List接口繼承了Collection接口,用于定義一個(gè)允許重復(fù)項(xiàng)的有序集合??梢詫ist理解為存放對(duì)象的數(shù)組,只不過(guò)其元素個(gè)數(shù)可以動(dòng)態(tài)的增加或者減削。該接口不但能夠?qū)α斜淼囊徊糠诌M(jìn)行處理,還添加了面對(duì)位置的操作。

面對(duì)位置的操作包括插入某個(gè)元素或Collection的功能,還包括獵取、除去或更改元素的功能。在List中搜尋元素可以從列表的頭部或尾部開始,假如找到元素,還將報(bào)告元素所在的位置:

voidadd(intinde*,Objectelement):在指定位置inde*上添加元素element。

booleanaddAll(intinde*,Collectionc):將集合c的全部元素添加到指定位置inde*。Objectget(intinde*):返回List中指定位置的元素。

intinde*Of(Objecto):返回第一個(gè)涌現(xiàn)元素o的位置,否那么返回-1。

intlastInde*Of(Objecto):返回最末一個(gè)涌現(xiàn)元素o的位置,否那么返回-1。

Objectremove(intinde*):刪除指定位置上的元素。

Java的集合框架總結(jié)

Objectset(intinde*,Objectelement):用元素element取代位置inde*上的元素,并且返回舊的元素。

在“集合框架”中有兩種常規(guī)的List實(shí)現(xiàn)ArrayList和LinkedList,分別用動(dòng)態(tài)數(shù)組和鏈表的方式實(shí)現(xiàn)List接口??梢哉J(rèn)為ArrayList和LinkedList的方法在規(guī)律上完全一樣,只是在性能上有肯定的差別。假如要支持隨機(jī)訪問(wèn),而不必在除尾部的任何位置插入或除去元素,那么,ArrayList提供了可選的集合。但假如,您要經(jīng)常的從列表的中間位置添加和除去元素,而只要順次的訪問(wèn)列表元素,那么,LinkedList實(shí)現(xiàn)更好。

1〕LinkedList類

LinkedList類——鏈表實(shí)現(xiàn)的List,在刪除或插入時(shí)只需轉(zhuǎn)變鏈表“指針”,即可實(shí)現(xiàn)。

(1)voidaddFirst(Objecto):將對(duì)象o添加到列表的開頭

voidaddLast(Objecto):將對(duì)象o添加到列表的結(jié)尾

(2)ObjectgetFirst():返回列表開頭的元素

ObjectgetLast():返回列表結(jié)尾的元素

(3)ObjectremoveFirst():刪除并且返回列表開頭的元素

ObjectremoveLast():刪除并且返回列表結(jié)尾的元素

(4)LinkedList():構(gòu)建一個(gè)空的鏈接列表

LinkedList(Collectionc):構(gòu)建一個(gè)鏈接列表,并且添加集合c的全部元素

“運(yùn)用這些新方法,您就可以輕松的把LinkedList當(dāng)作一個(gè)堆棧、隊(duì)列或其它面對(duì)端點(diǎn)的數(shù)據(jù)結(jié)構(gòu)?!?/p>

2〕ArrayList類

ArrayList類——?jiǎng)討B(tài)數(shù)組實(shí)現(xiàn)的List,可以通過(guò)下標(biāo)快速的索引到對(duì)應(yīng)的元素,但在刪除和移動(dòng)時(shí)移動(dòng)較多元素。

ArrayList類封裝了一個(gè)動(dòng)態(tài)再安排的Object[]數(shù)組。每個(gè)ArrayList對(duì)象有一個(gè)capacity。這個(gè)capacity表示存儲(chǔ)列表中元素的數(shù)組的容量。當(dāng)元素添加到ArrayList時(shí),它的capacity在常量時(shí)間內(nèi)自動(dòng)增加。

在向一個(gè)ArrayList對(duì)象添加大量元素的程序中,可運(yùn)用ensureCapacity方法增加capacity。這可以減削增加重安排的數(shù)量。

(1)voidensureCapacity(intminCapacity):將ArrayList對(duì)象容量增加minCapacity

(2)voidtrimToSize():整理ArrayList對(duì)象容量為列表當(dāng)前大小。程序可運(yùn)用這個(gè)操作減削ArrayList對(duì)象存儲(chǔ)空間。

四、List高級(jí)—數(shù)據(jù)結(jié)構(gòu):Queue隊(duì)列

隊(duì)列是常用的數(shù)據(jù)結(jié)構(gòu),可以將〔Queue〕隊(duì)列看成非常的線性表,隊(duì)列限制了對(duì)線性表的訪問(wèn)方式,即只能從線性表的一段添加〔offer〕元素,從另一端取出〔poll〕元素。隊(duì)列遵循先進(jìn)先出〔FIFO〕原那么。

JDK中提供了Queue接口,同時(shí)使得LinkedList實(shí)現(xiàn)該接口〔Queue常常要進(jìn)行插入和刪除的操作,而LinkedList在這方面效率最高〕。

Queue接口中的主要方法:

Booleanoffer〔Ee〕講一個(gè)對(duì)象添加到隊(duì)尾,添加勝利那么返回true。

Epool〔〕從隊(duì)首刪除并返回一個(gè)元素。

Epeek〔)返回隊(duì)首的元素〔但并不刪除〕。

五、List高級(jí)—數(shù)據(jù)結(jié)構(gòu):Deque棧

棧也是常用的數(shù)據(jù)結(jié)構(gòu),?!睤eque〕那么是Queue的子接口,定義了所謂的“雙端隊(duì)列”,即從隊(duì)列的兩端分別可以入隊(duì)〔offer〕和出隊(duì)〔poll〕,假如將Deque限制為只能從一段入隊(duì)

Java的集合框架總結(jié)

和出隊(duì),那么可實(shí)現(xiàn)“?!睸tack〕”的數(shù)據(jù)結(jié)構(gòu),對(duì)于棧而言,入棧稱之為push,出棧稱為pop。棧遵循先進(jìn)后出〔FILO〕原那么。

Deque常用的方法:

Epush〔〕壓入,向棧中存入數(shù)據(jù)。

Epop〔〕取出,從棧中取出數(shù)據(jù)。

Epeek〔〕獵取棧頂位置的元素,但不取出。

六、Set接口

Set接口也是Collection接口的子接口,但是與Collection或List接口不同的是,Set接口中不能加入重復(fù)的元素,是由于Set判斷兩個(gè)對(duì)象相同不是運(yùn)用==運(yùn)算符,而是依據(jù)equals方法。即兩個(gè)對(duì)象用equals方法比較返回true,Set就不能接受兩個(gè)對(duì)象。同時(shí)Set集合里多個(gè)對(duì)象之間沒(méi)有明顯的順次。

其實(shí)Set具有與Collection完全一樣的接口,除了說(shuō)明不一樣其他都一樣,也就是Set根本沒(méi)有對(duì)Collection擴(kuò)展,只是對(duì)add,equals,hashCode的定義說(shuō)明不一樣,由于Set是不允許重復(fù)元素的。但是要留意的是:雖然Set和Collection中的方法一樣,但是他們是完全不一樣的,List可以自動(dòng)為Collection,但是絕對(duì)不能轉(zhuǎn)為Set的。

遍歷Set集合的元素只有一種方式,迭代器。同時(shí)set集合不支持索引,也不具備List集合的get〔〕方法。

Set接口的常用子類:

1〕散列的存放:HashSet

HashSet按Hash算法來(lái)存儲(chǔ)集合的元素,因此具有很好的存取和查找性能。HashSet的特點(diǎn):

〔1〕HashSet不是同步的,多個(gè)線程訪問(wèn)是需要通過(guò)代碼保證同步

〔2〕集合元素值可以使null。

HashSet集合判斷兩個(gè)元素相等的標(biāo)準(zhǔn)是兩個(gè)對(duì)象通過(guò)equals方法比較相等,并且兩個(gè)對(duì)象的hashCode〔〕方法返回值也相等。

其實(shí)原理是這樣的:HashSet的底層采納HashMap來(lái)存放數(shù)據(jù),HashMap的put()方法是這樣的:

publicVput(Kkey,Vvalue){

if(key==null)

returnputForNullKey(value);

inthash=hash(key.hashCode());//1

inti=inde*For(hash,table.length);//2

for(EntryK,Ve=table[i];e!=null;e=e.ne*t){//3

Objectk;

if(e.hash==hash((k=e.key)==key||key.equals(k))){

VoldValue=e.value;

e.value=value;

e.recordAccess(this);

returnoldValue;

}

}//4

modCount++;

addEntry(hash,key,value,i);

Java的集合框架總結(jié)

returnnull;

}

當(dāng)向HashMap中添加元素的時(shí)候,首先計(jì)算元素的hashcode值,然后依據(jù)1處的代碼計(jì)算出Hashcode的值,再依據(jù)2處的代碼計(jì)算出這個(gè)元的存儲(chǔ)位置假如這個(gè)位置為空,就將元素添加進(jìn)去;假如不為空,那么看3-4的代碼,遍歷索引為i的鏈上的元素,假如key重復(fù),那么替換并返回oldValue值。

2〕有序的存放:TreeSet

TreeSet是SortedSet接口的唯一實(shí)現(xiàn),是按排序二叉樹算法來(lái)存儲(chǔ)元素的,TreeSet可以確保集合元素處于排序狀態(tài)〔元素是有序的〕。

七、Map

→Map用于保存具有映射關(guān)系的數(shù)據(jù)〔key-vlaue〕。Map的key不允許重復(fù),即同一個(gè)Map對(duì)象的任何兩個(gè)key通過(guò)equals方法比較總是返回false。

→Map集合與Set集合元素的存儲(chǔ)形式很像,如Set接口下有HashSet、LinkedHashSet、SortedSet〔接口〕、TreeSet、EnumSet等實(shí)現(xiàn)類和子接口,而Map接口下那么有HashMap、LinkedHashMap、SortedMap〔接口〕、TreeMap、EnumMap等實(shí)現(xiàn)類和子接口?!鶰ap的value特別類似List:元素與元素之間可以重復(fù),每個(gè)元素可以依據(jù)索引〔key〕來(lái)查找。

→Map有時(shí)也稱為字典,或關(guān)聯(lián)數(shù)組。

→Map接口中定義如下方法:

voidclear();刪除Map對(duì)象中全部key-value對(duì)。

booleancontainsKey(Objectkey):查詢Map中是否包含指定key,假如包含那么返回true。

booleancontainsValue(Objectvalue):查詢Map中是否包含一個(gè)或多個(gè)value,假如包含那么返回true。

SetentrySet():返回Map中全部包含的key-value對(duì)組成的Set集合,每個(gè)集合元素都是Map.Entry(Entry是Map的內(nèi)部類〕對(duì)象。

Objectget(Obejctkey):返回指定key所對(duì)應(yīng)的value;假如此Map中不包含key,那么返回null。

booleanisEmpty():查詢?cè)揗ap是否為空〔即不包含任何key-value對(duì)〕,假如為空那么返回true。

SetkeySet():返回該Map中全部key所組成的set集合。

Objectput(Objectkey,Objectvalue):添加一個(gè)key-value對(duì),假如當(dāng)前Map中已有一個(gè)與該key相等的key-value對(duì),那么新的key-value對(duì)會(huì)掩蓋原來(lái)的key-value對(duì)。Objectremove(Objectkey):刪除指定key對(duì)應(yīng)的key-value對(duì),返回被刪除key所關(guān)聯(lián)的value,假如該key不存在,返回null。

intsize():返回該Map里的key-value對(duì)的個(gè)數(shù)。

Collectionvalues():返回該Map里全部value組成的Collection。

Map中包括一個(gè)內(nèi)部類:Entry。該類封裝了一個(gè)key-value對(duì),Entry包含三個(gè)方法:Objectgetkey():返回該Entry里包含的key值。

ObjectgetValue():返回該Entry里包含的value值。

ObjectsetValue():設(shè)置該Entry里包含的value值,并返回新設(shè)置的value值?!梢园袽ap理解成一個(gè)非常的Set,只是該Set里包含的集合元素是Entry對(duì)象,而不是一般對(duì)象。

→遍歷Map有三種方式:

Java的集合框架總結(jié)

1、遍歷map中的全部key

publicSetkeySet()調(diào)用keySet〔〕方法會(huì)返回一個(gè)Set集合的實(shí)例,其中保留的元素為Map中全部的Key。

2、遍歷Map中全部的鍵值對(duì)Entry

publicSetentrySet()調(diào)用entrySet〔〕方法會(huì)返回一個(gè)Set集合的實(shí)例,其中保存的元素為Map中的每一組鍵值對(duì),每一個(gè)鍵值對(duì)用一個(gè)Entry實(shí)例保存。

3、遍歷Map中全部的value(不常用)。

→Map接口提供了大量的實(shí)現(xiàn)類,如HashMap和Hashtable等,以及HashMap的子類,LinkedHashMap,還有SortedMap子接口及該接口的實(shí)現(xiàn)類TreeMap。

1〕、HashMap和Hashtable實(shí)現(xiàn)類

HashMap和Hashtable都是Map接口的實(shí)現(xiàn)類,Hashtable是一個(gè)古老的Map實(shí)現(xiàn)類,它從JDK1.0起就有,它包含兩個(gè)煩瑣的方法:elements()(類似于Map接口定義的values()方法〕和keys()〔類似于Map接口定義的keySet()方法),現(xiàn)在很少運(yùn)用這兩種方法。兩點(diǎn)區(qū)分:

Hashtable是一個(gè)線程安全的Map實(shí)現(xiàn),但HashMap是線程擔(dān)心全的實(shí)現(xiàn),所以HashMap比Hashtable的性能高些;但假如多線程訪問(wèn)同一個(gè)Map對(duì)象,運(yùn)用Hashtable實(shí)現(xiàn)類更好。Hashtable不允許運(yùn)用null作為key和value,假如為null,那么引發(fā)NullPointerE*ception異樣;但HashMap可以運(yùn)用null作為key或value。

由于HashMap里的可以不能重復(fù),所以HashMap里最多只有一對(duì)key-value值為null,但可以有很多多項(xiàng)key-value對(duì)的value為null。

HashMap重寫了toString()方法方法總是返回如下格式的字符串:{key1=value1,key2=value2..}

HashMap、Hashtable判斷兩個(gè)key相等的標(biāo)準(zhǔn)是:兩個(gè)key通過(guò)equasl方法比較返回ture,兩個(gè)key的hashCode值相等。

LinkedHashMap類

HashMap有一個(gè)子類:LinkedHashMap,它也是雙向鏈表來(lái)維護(hù)key-value對(duì)的次序,該鏈表定義了迭代順次,該迭代順次與key-value對(duì)的插入順次保持全都。

LinkedHashMap可以避開對(duì)HashMap、Hashtable里的key-value對(duì)進(jìn)行排序〔只要插入key-value對(duì)時(shí)保持順次即可〕。同時(shí)又可避開運(yùn)用TreeMap所增加的成本。

LinkedHashMap需要維護(hù)元素的插入順次,因此性能略低于HashMap的性能,但在迭代訪問(wèn)Map里的全部元素時(shí)將有很好的性能,由于它以鏈表來(lái)維護(hù)內(nèi)部順次。

2〕、SortedMap接口和TreeMap實(shí)現(xiàn)類

Map接口派生了一個(gè)SortedMap子接口,TreeMap為其實(shí)現(xiàn)類。類似TreeSet排序,TreeMap也是基于紅黑樹對(duì)TreeMap中全部key進(jìn)行排序,從而保證TreeMap中全部key-value對(duì)處于有序狀態(tài)。

TreeMap兩種排序方法:

自然排序:TreeMap的全部key需要實(shí)現(xiàn)Comparable接口,而且全部key應(yīng)當(dāng)是同一個(gè)類的對(duì)象,否那么將會(huì)拋出ClassCastE*cepiton異樣。

定制排序:創(chuàng)建TreeMap時(shí),傳入一個(gè)Comparator對(duì)象,該對(duì)象負(fù)責(zé)對(duì)TreeMap中全部key進(jìn)行排序。采納定制排序時(shí)不要求Map的key實(shí)現(xiàn)Comparable接口。

TreeMap中判斷兩個(gè)key相等的標(biāo)準(zhǔn)也是兩個(gè)key通過(guò)equals比較返回true,而通過(guò)compareTo方法返回0,TreeMap即認(rèn)為這兩個(gè)key是相等的。

八、小結(jié)

List:保證以某種特定插入順次來(lái)維護(hù)元素順次,即保持插入的順次,另外元素可以重復(fù)。

Java的集合框架總結(jié)

ArrayList:是用數(shù)組實(shí)現(xiàn)的,讀取速度快,插入與刪除速度慢〔由于插入與刪除時(shí)要移動(dòng)后面的元素〕,適合于隨機(jī)訪問(wèn)。

Vector:功能與ArrayList幾乎相同,也是以數(shù)組實(shí)現(xiàn),添加,刪除,讀取,設(shè)置都是基于線程同步的。

LinkedList:雙向鏈表來(lái)實(shí)現(xiàn),刪除與插入速度快,讀取速度較慢,由于它讀取時(shí)是從頭向尾〔假如節(jié)點(diǎn)在鏈的前半部分〕,或尾向頭〔假如節(jié)點(diǎn)在鏈的后半部分〕查找元素。因此適合于元素的插入與刪除操作。

Set:維持它自己的內(nèi)部排序,隨機(jī)訪問(wèn)不具有意義。另外元素不可重復(fù),內(nèi)部是以Map實(shí)現(xiàn)的。

HashSet:是最常用的,查詢速度最快,由于內(nèi)部以HashMap來(lái)實(shí)現(xiàn),所以插入元素不能保持插入次序。

LinkedHashSet:繼承了HashSet,保持元素的插入次序,由于內(nèi)部運(yùn)用LinkedHashMap實(shí)現(xiàn),所以能保持元素插入次序。

TreeSet:基于TreeMap,生成一個(gè)總是處于排序狀態(tài)的set,它實(shí)現(xiàn)了SortedSet接口,內(nèi)部以TreeMap來(lái)實(shí)現(xiàn)。

Map:用于保存具有映射關(guān)系的數(shù)據(jù)〔key-vlaue〕,Key不允許重復(fù)。

TreeMap:鍵以某種排序規(guī)章排序,內(nèi)部以red-black〔紅-黑〕樹數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),實(shí)現(xiàn)了SortedMap接口。

HashMap:以哈希表數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),查找對(duì)象時(shí)通過(guò)哈希函數(shù)計(jì)算其位置,它是為快速查詢而設(shè)計(jì)的,其內(nèi)部定義了一個(gè)hash表數(shù)組〔Entry[]table〕,元素會(huì)通過(guò)哈希轉(zhuǎn)換函數(shù)將元素的哈希地址轉(zhuǎn)換成數(shù)組中存放的索引,假如有沖突,那么運(yùn)用散列鏈表的形式將全部相同哈希地址的元素串起來(lái)。

Hashtable:也是以哈希表數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的,解決沖突時(shí)與HashMap也一樣也是采納了散列鏈表的形式,不過(guò)性能比HashMap要低。

九、比較

1、ArrayList和Vector

同步性:Vector是線程安全的,也就是說(shuō)是同步的,而ArrayList是線程序擔(dān)心全的,不是同步的。

數(shù)據(jù)增長(zhǎng):當(dāng)需要增長(zhǎng)時(shí),Vector默認(rèn)增長(zhǎng)為原來(lái)一培,而ArrayList卻是原來(lái)的一半

2、Collection和Collections

Collection,java.unit下的接口,是一系列單值集合類的父接口,主要有List和Set,提供了基本的一些方法。而Collections是java.unit下的類,是針對(duì)集合的一些援助類,是一系列算法的集合。里面的屬性和方法基本都是static的,來(lái)實(shí)現(xiàn)對(duì)各種集合的搜尋、排序、線程安全化等操作。

3、Iterator與ListIterator有什么區(qū)分?

Iterator:只能正向遍歷集合,適用于獵取移除元素。ListIerator:繼承Iterator,可以雙向列表的遍歷,同樣支持元素的修改。

4、heap和stack有什么區(qū)分。

?!瞫tack〕是一種線形集合,其添加和刪除元素的操作應(yīng)在同一段完成。棧根據(jù)后進(jìn)先出的方式進(jìn)行處理。

堆〔heap〕是棧的一個(gè)組成元素。

十、總結(jié)

Java的集合框架總結(jié)

關(guān)于集合框架的只是很雜,很亂。我也只是依據(jù)咱們的學(xué)習(xí)總結(jié)了一些咱們常常需要用到和面試會(huì)常??嫉降闹R(shí)點(diǎn)。我盼望每一個(gè)同學(xué)都能抽出那么幾分鐘看一看這個(gè),來(lái)讓我們的大腦再加深一下關(guān)于集合的印象。本文我沒(méi)有運(yùn)用代碼進(jìn)行演示,望大家諒解,感謝您的參考!

Java的集合框架總結(jié)

JAVA集合框架

一、集合框架

在實(shí)際開發(fā)中,需要將對(duì)象依據(jù)不同的需求而存儲(chǔ)在特定的數(shù)據(jù)結(jié)構(gòu)容器中。但是數(shù)組雖然是一種用來(lái)存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),但是它的局限性很低,很難滿意各種的需求,所以JDK涌現(xiàn)了用來(lái)滿意各種需求的框架——集合框架。

“集合框架”主要由一組用來(lái)操作對(duì)象的接口組成。不同接口描述一組不同數(shù)據(jù)類型。常見(jiàn)的集合類有:1〕實(shí)現(xiàn)Collection接口的:List接口、Set接口。

2〕實(shí)現(xiàn)Map接口的。

二、Collection接口

Collection接口表示了如何把一組對(duì)象作為它的元素。JDK沒(méi)有徑直提供Collection接口的實(shí)現(xiàn),Collection接口的實(shí)現(xiàn)依靠于兩個(gè)繼承自自己的接口:Set和List。全部通過(guò)實(shí)現(xiàn)Collection接口的子接口的類應(yīng)當(dāng)提供兩個(gè)標(biāo)準(zhǔn)的構(gòu)造器:一個(gè)不需要參數(shù)的構(gòu)造器,用來(lái)創(chuàng)建一個(gè)空的集合,另外一個(gè)需要一個(gè)類型作為參數(shù)的構(gòu)造器,用來(lái)創(chuàng)建一個(gè)和參數(shù)的類型相同的元素的集合。

intsize():返回這個(gè)集合中的元素的數(shù)量。

booleanisEmpty():返回集合是否包含元素,假如沒(méi)有的話,返回true。booleancontains(Ee):假如這個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論