集合框架:用於儲存的容器
特點:集合用於儲存物件,集合的長度是可變的
集合和陣列的區別:
陣列長度不可變,集合的長度是可變的
陣列可以儲存基本資料型別,集合儲存的是物件
陣列只能儲存相同的資料型別,集合可以儲存不同的資料型別
集合再不斷的向上抽取,就形成了集合體系
集合體系頂層是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.集合類 為什麼會出現集合類?面對物件語言對事物的體現都是以物件的形式,所以為了方便對多個物件的操作,就對物件進行儲存,集合就是儲存物件最常用的一種方式。集合類的特點 集合只用於儲存物件,集合的長度是可變的,集合可以儲存不同型別的物件。集合...