黑馬程式設計師 集合框架

2021-06-26 08:42:12 字數 3162 閱讀 4484

集合框架:用於儲存的容器

特點:集合用於儲存物件,集合的長度是可變的

集合和陣列的區別:

陣列長度不可變,集合的長度是可變的

陣列可以儲存基本資料型別,集合儲存的是物件

陣列只能儲存相同的資料型別,集合可以儲存不同的資料型別

集合再不斷的向上抽取,就形成了集合體系

集合體系頂層是collection介面

collection介面

collection基本方法 

collectioncoll=new arraylist();

新增:coll.add(「abc」);coll.addall();

刪除:coll.clear()刪除所有 coll.remove()

判斷:booleanb=c1.containsall(c2)判斷c1中是否包含c2

獲取:coll.size()獲取集合中元素個數

將集合變成乙個陣列 toarray

iterator介面

迭代器:是乙個介面,用於取出集合中的元素

collectioncoll=new arraylist();

coll.add("abc");

coll.add("bcd");

取出方式一

iteratorit=coll.iterator

while(it.hasnext)

方式二for(iteratorit=coll.iterator;it.hasnext())

list介面:collection的子介面,具備collection的所有方法

list:有序,有索引,可以重複

|--arraylist:底層結構是陣列,執行緒不同步,查詢快

|--linkedlist:底層結構是鍊錶結構,執行緒不同步,增刪快

list支援對元素的增刪改查

當迭代過程中使用了集合的同時對元素進行操作,導致了迭代的不確定性,解決方法為listiterator介面進行迭代

取出list集合中元素

for(intx=0;xlist集合判斷底層元素是否相同,其實都是用元素的自身的equals方法來完成的

linkedlist:鍊錶式集合

特有方法:addfrist:每新增乙個都是在原元素前新增

addlast

getfrist:獲取第乙個元素

getlast

getremove:獲取第乙個元素,並刪除

set介面:set方法和collection中的方法一致,獲取set集合的方法只有迭代

hashset:底層資料時雜湊表,執行緒不同步,無序,高效

hashset保證元素的唯一性:通過元素的hashcode方法,和equals方法

如果hashcode的方法相同,就判斷equals方法,如果equals方法相同,就不存,如果相同就儲存

treeset:二叉樹結構,對set集合中的元素進行指定順序的排序,執行緒不同步

雜湊表的原理:對物件中的元素進行雜湊運算,並得到乙個演算法值,即雜湊值

將雜湊值儲存到集合中,如果雜湊衝突出現,再次判斷物件是否相同,如果相同,就不儲存,如果不同,就儲存,在原來的雜湊基礎上+1順延

儲存雜湊值得結構,就是雜湊表

雜湊表是根據雜湊值儲存的,為了提高效率,就要保證物件關鍵字的唯一性

對於arraylist,判斷元素是否存在根據的是equals方法

對於hashset,判斷元素是否存在根據的是hashcode方法和equals方法

treeset:對指定set集合元素進行指定順序的排序,排序的前提是元素具有比較性

如果不具有比較小,就會丟擲異常

treeset保證元素的唯一性的方式:就是判斷比較方法的結果是否為零,return=0視為兩個元素相同,不存

treeset集合的排序有兩種方式comparable和comparator

讓元素具有比較性,需要元素物件實現comparable,覆蓋comparto方法

讓元素具有比較性,需要定義乙個實現comparator介面的比較器,並覆蓋conpare方法,並將該物件作為實際引數傳遞給set集合的建構函式

map集合:鍵值對,雙列集合

hashtable:底層是雜湊表結構,執行緒同步的,不能儲存null鍵,null值

hashmap:底層是雜湊表結構,執行緒不同步的,能儲存null鍵,null值

treemap:底層是二叉樹結構,可以對元素進行指定順序的排列

map集合和collection不同,conllection儲存的是乙個元素,map集合儲存的是一對元素

map集合時雙列集合,鍵和值是對映的關係,collection是單列集合

特點是:保證map集合中的鍵的唯一性

mapmap=new hashmap();

新增:map.put(key,value),當重新寫入key值時,會覆蓋以前的key值,並將之間的value返回

刪除:map.clear();清除所有,map.remove(key)清除指定位置的值

判斷:boolean型別,map.isempty判斷是否為空,map.containskey判斷是否包含鍵

取出:int len=map.size(); 返回長度   string value=map.get(key)通過鍵獲取值

如何獲取map集合中所有的元素:

map集合時沒有迭代器的,而collection集合有,而且map集合是沒有重複的,所以將map集合轉成set集合,在用迭代獲取其中的元素

獲取map集合的三種方法

方法一:keyset   通過鍵獲取值泛型為鍵的型別

set keyset=map.keyset();

for(iteratorit=keyset.iterator;it.hasnext())

方式三:value,但是只能獲取值

collectioncoll=map.value();

for(iteratorit=value.iterator;it.hasnext());listlist=arrays.aslist(arr);

將陣列轉成集合是由侷限性的:陣列長度不可變,所有集合中可以改變長度的方法不能使用。如果陣列中儲存的是基本資料型別,變成集合後會將陣列實體作為集合元素存在。

toarray():將集合轉成陣列

stringarr=list.toarray()

在傳遞指定型別陣列時,最好的方式是指定陣列長度和size()相同

好處:限定了對集合中的元素的增刪操作,只能獲取這些集合

黑馬程式設計師 集合框架的使用

集合類的由來 物件用於封裝特有資料,物件多了需要儲存,如果物件個數不確定。就使用集合容器進行儲存。集合的特點 用於儲存物件的容器。集合的長度是可變的。集合中不可以儲存基本資料型別值。集合容器因為內部的資料結構不同,有多種具體容器。不斷的向上抽取,就形成了集合框架。框架的頂層是 collection ...

黑馬程式設計師 集合

collection list 元素是有序的,元素可以重複。因為該集合體系有索引。arraylist 底層的資料結構使用的是陣列結構。特點 查詢速度很快。但是增刪稍慢。執行緒不同步。linkedlist 底層使用的鍊錶資料結構。特點 增刪速度很快,查詢稍慢。執行緒不同步。vector 底層是陣列資料...

黑馬程式設計師 集合

asp.net unity開發 net培訓 期待與您交流!1.集合類 為什麼會出現集合類?面對物件語言對事物的體現都是以物件的形式,所以為了方便對多個物件的操作,就對物件進行儲存,集合就是儲存物件最常用的一種方式。集合類的特點 集合只用於儲存物件,集合的長度是可變的,集合可以儲存不同型別的物件。集合...