更新時(shí)間:2018-09-06 來(lái)源:黑馬程序員技術(shù)社區(qū) 瀏覽量:
概念:集合類(lèi)主要負(fù)責(zé)保存、封裝其他數(shù)據(jù),因此集合類(lèi)也被稱(chēng)為容器類(lèi)。
1.儲(chǔ)存對(duì)象可以考慮:1數(shù)組2集合。
2.數(shù)組儲(chǔ)存對(duì)象的特點(diǎn)。student[] stu=new student [20];
>>弊端1.一旦創(chuàng)建,其長(zhǎng)度不變。2.真實(shí)的數(shù)組存放的對(duì)象的個(gè)數(shù)是不可知的。
3.集合:分為collection和map兩種體系
注意:
①、集合只能存放對(duì)象。比如你存一個(gè) int 型數(shù)據(jù) 1放入集合中,其實(shí)它是自動(dòng)轉(zhuǎn)換成 Integer 類(lèi)后存入的,Java中每一種基本類(lèi)型都有對(duì)應(yīng)的引用類(lèi)型。
②、集合存放的是多個(gè)對(duì)象的引用,對(duì)象本身還是放在堆內(nèi)存中。
③、集合可以存放不同類(lèi)型,不限數(shù)量的數(shù)據(jù)類(lèi)型。
Collection接口:
List接口:存儲(chǔ)元素?zé)o序、不可重復(fù)的集合 ---類(lèi)似高中的“集合”
---ArrayList(主要的實(shí)現(xiàn)類(lèi)),LinkedList,vector
Set接口:存儲(chǔ)元素有序,可重復(fù)的集合 ---”動(dòng)態(tài)”數(shù)組(無(wú)序性!=隨機(jī)性)
----HashSet,LinkedHashSet,TreeSet
Collection使用的例子:
添加元素:collection.add("");
刪除指定元素:collection.remove("");
刪除所有元素(collection.clear): Collection c = new ArrayList(); c.add("Bob"); collection.removeAll(c);
判斷是否為空:collection.isEmrty();
判斷集合中的元素是否完全相同:equals(Object obj)
利用增強(qiáng)for循環(huán)遍歷集合: for(Object obj : collection){ System.out.println(obj); }
利用迭代器:Iterator: Iterator iterator = collection.iterator();
while(iterator.hasNext()){
Object obj = iterator.next();
System.out.println(obj);
}
1.Iterator:迭代器,它是Java集合的頂層接口(不包括 map 系列的集合,Map接口 是 map 系列集合的頂層接口)
Object next():返回迭代器剛越過(guò)的元素的引用,返回值是 Object,需要強(qiáng)制轉(zhuǎn)換成自己需要的類(lèi)型
boolean hasNext():判斷容器內(nèi)是否還有可供訪(fǎng)問(wèn)的元素
void remove():刪除迭代器剛越過(guò)的元素
2.ArrayList,List主要的實(shí)現(xiàn)類(lèi):
LIst常用方法:void add(int index, Object ele) :在指定的索引index為只添加元素ele(插)
Object get(int index) 獲取指定的元素(查)
int indexOf(Object obj) :返回obj在集合中首次出現(xiàn)的位置,沒(méi)有的話(huà)返回-1,(獲得指定對(duì)象的索引)
int lastIndexOf(Object obj) :返回obj在集合中最后一次出現(xiàn)的位置,沒(méi)有的話(huà)返回-1,
Object remove(int index) 刪除指定索引位置的元素(刪)
Object set(int index, Object ele) 設(shè)置指定索引位置的元素(改)
List subList(int fromIndex, int toIndex)返回從fromIndex到toindex結(jié)束的一個(gè)list
3.HashSet,Set主要的實(shí)現(xiàn)類(lèi):(Set接口是Collection的子接口,set接口沒(méi)有提供額外的方法)
特點(diǎn):不能保證元素的順序;不可重復(fù);不是線(xiàn)程安全的;集合元素可以為 NULL;
Set hashSet = new HashSet();
Map接口:存儲(chǔ)“鍵-值”對(duì)的數(shù)據(jù);
1.具有映射關(guān)系“key-value對(duì)”的集合 ---類(lèi)似于高中的“函數(shù)” y = f(x) (x1,y1) (x2,y2)。key相當(dāng)于變量value相當(dāng)于因變量。嚴(yán)格來(lái)說(shuō) Map 并不是一個(gè)集合,而是兩個(gè)集合之間 的映射關(guān)系。
2.因?yàn)?Map 集合即沒(méi)有實(shí)現(xiàn)于 Collection 接口,也沒(méi)有實(shí)現(xiàn) Iterable 接口,所以不能對(duì) Map 集合進(jìn)行 for-each 遍歷。
Map遍歷: