Java是1種面向?qū)ο笳Z(yǔ)言,如果我們要針對(duì)多個(gè)對(duì)象進(jìn)行操作,就必須對(duì)多個(gè)對(duì)象進(jìn)行存儲(chǔ)。而數(shù)組長(zhǎng)度固定,不能滿足變化的要求。所以,java提供了集合。
特點(diǎn)
1. 長(zhǎng)度可以產(chǎn)生改變
2. 只能存儲(chǔ)對(duì)象
3. 可以存儲(chǔ)多種類型對(duì)象
與數(shù)組區(qū)分
數(shù)組
集合
長(zhǎng)度
固定
可變
存儲(chǔ)元素
基本類型/援用類型
援用類型
元素類型的1致性
必須1致
可以不1致
集合作為1個(gè)容器,可以存儲(chǔ)多個(gè)元素,但是由于數(shù)據(jù)結(jié)構(gòu)的不同,java提供了多種集合類。將集合類中共性的功能,不斷向上抽取,終究構(gòu)成了集合體系結(jié)構(gòu)。
數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)存儲(chǔ)的方式
Java中集合類的關(guān)系圖
集合體系導(dǎo)圖(用鼠標(biāo)拖動(dòng)圖片可看大圖或右擊圖片選擇在新標(biāo)簽頁(yè)中打開圖片(I))
Collection是最基本的集合接口,1個(gè)Collection代表1組Object,即Collection的元素(Elements)。1些Collection允許相同的元素而另外一些不行。1些能排序而另外一些不行,因而衍生出兩個(gè)子類接口List和Set。
A:添加功能
booleanadd(Object obj):向集合中添加1個(gè)元素
booleanaddAll(Collection c):向集合中添加1個(gè)集合的元素。
B:刪除功能
voidclear():刪除集合中的所有元素。
booleanremove(Object obj):從集合中刪除指定的元素
booleanremoveAll(Collection c):從集合中刪除1個(gè)指定的集合元素。
C:判斷功能
booleanisEmpty():判斷集合是不是為空。
booleancontains(Object obj):判斷集合中是不是存在指定的元素。
booleancontainsAll(Collection c):判斷集合中是不是存在指定的1個(gè)集合中的元素。
D:遍歷功能
Iterator iterator():就是用來(lái)獲得集合中每個(gè)元素。
E:長(zhǎng)度功能
intsize():獲得集合中的元素個(gè)數(shù)
F:交集功能
booleanretainAll(Collection c):判斷兩個(gè)集合中是不是有相同的元素。???
G:把集合轉(zhuǎn)換成數(shù)組
Object[]toArray():把集合變成數(shù)組。
List接口下的集合元素存儲(chǔ)有序,可以重復(fù)。
A:添加功能
voidadd(int index, Object obj):在指定位置添加元素
B:刪除功能
Objectremove(int index):根據(jù)指定索引刪除元素,并把刪除的元素返回。
C:修改功能
Objectset(int index, Object obj):把指定索引位置的元素修改成指定的值,返回修改前的值。
D:獲得功能
intindexOf(Object o):返回指定元素在集合中第1次出現(xiàn)的索引
Objectget(int index):獲得指定位置的元素
ListIteratorlistIterator():列表迭代器
E:截取功能
ListsubList(int fromIndex, int toIndex):截取集合。
Set接口下的元素?zé)o序,不可以重復(fù)。其下面分為HashSet和TreeSet。
底層數(shù)據(jù)結(jié)構(gòu)是哈希表,線程不安全,效力高。
保證唯1性依賴兩個(gè)方法:hashCode()和equals()。
順序:
判斷hashCode()值是不是相同。
相同:繼續(xù)走equals(),看返回值
如果true:就不添加到集合。
如果false:就添加到集合。
不同:就添加到集合。
底層數(shù)據(jù)結(jié)構(gòu)是2叉樹,線程不安全,效力高。
保證元素唯1性的方法時(shí)根據(jù)返回值是不是是0。
保證排序的兩種方式:
自然排序(元素具有比較性):實(shí)現(xiàn)Comparable接口
比較器排序(集合具有比較性):實(shí)現(xiàn)Comparator接口
未完待續(xù),下篇為迭代器+Map集合
上一篇 hdu 1565 方格取數(shù)(1) 狀壓DP
下一篇 Android開源框架Universal-Image-Loader學(xué)習(xí)三――UsingFreqLimitedMemoryCache源碼閱讀