6、集合類

[集合的特點(diǎn)和實(shí)現(xiàn)](http://blog.csdn.net/qq_25868207/article/details/55259978

一、認(rèn)識(shí)集合類

集合框架接口:Collection、List、Set、Map、Iterator


image.png

image.png

其中分為:list:鏈表、數(shù)組列表;set:散列集、樹(shù)集;map:映射;隊(duì)列
鏈表:LinkedList,一種可以在任何位置進(jìn)行高效插入和刪除操作的有序序列
數(shù)組列表:ArraysList,一種可以動(dòng)態(tài)增長(zhǎng)縮減的索引序列
散列集:HashSet,一種沒(méi)有重復(fù)元素無(wú)序集合
樹(shù)集:TreeSet,一種有序集(沒(méi)有重復(fù)元素)
HashMap:一種鍵值存儲(chǔ)關(guān)聯(lián)的映射表
TreeMap:一種鍵值有序排列的映射表

二、 一些需要注意的問(wèn)題

1、List 和Set都是繼承Collection接口的,map不是
2、List特點(diǎn):元素有存放順序,元素可重復(fù);Set特點(diǎn):元素存放沒(méi)有順序,元素不可重復(fù)(注意:元素雖然無(wú)序放入,但是元素在set中的位置是由該元素的HashCode決定的,其位置其實(shí)是固定的,加入set的Object必須定義equals()方法,另外list支持for循環(huán),就是通過(guò)下標(biāo)來(lái)遍歷,也可以使用迭代器)
3、set和list相比:
set:檢索元素效率低,刪除和插入效率高,插入和刪除不會(huì)引起元素位置的改變
list :和數(shù)組類似,list可以動(dòng)態(tài)增長(zhǎng),查找元素效率高,插入刪除元素效率低,因?yàn)闀?huì)引起其他元素位置改變
4、線程安全和非線程安全
安全:HashTable、StringBuffer
非安全:LinkedList、ArrayList、HashSet、HashMap、StringBuilder

●Array和ArrayList的區(qū)別:
Array可包含基本數(shù)據(jù)類型和對(duì)象類型,ArrayList只能包含對(duì)象類型;
array大小是固定的,ArrayList的大小是動(dòng)態(tài)變化的。

●ArrayList和LinkedList的區(qū)別:
各自特性:
__ArrayList : 是一由連續(xù)的內(nèi)存塊組成的數(shù)組,范圍大小可變的,當(dāng)不夠時(shí)增加為原來(lái)1.5倍大小,數(shù)組。 :調(diào)用trimToSize方法,使得存儲(chǔ)區(qū)域的大小調(diào)整為當(dāng)前元素?cái)?shù)量所需要的空間大小,垃圾回收器將會(huì)回收多余存儲(chǔ)空間。
__LinkedList : 是由隨機(jī)內(nèi)存塊通過(guò)指針連接起來(lái)的,范圍大小可變的,當(dāng)不夠時(shí)增加為原來(lái)2倍大小,一個(gè)雙向鏈表,
結(jié)論一 : ArrayList集合訪問(wèn)查找比LinkedList集合速度快,
結(jié)論二 : LinkedList集合增刪元素比ArrayList集合速度快,后者會(huì)引起其他元素位置的改變

●HashMap和Hashtable的區(qū)別:
兩者都實(shí)現(xiàn)了map接口,HashMap允許鍵和值為null,Hashtable不允許鍵或者值為Null.
Hashtable是同步的,而HashMap是異步的。因此前者更適合于多線程,后者適用于單線程環(huán)境。

●HashSet和TreeSet區(qū)別:
HashSet由hash表來(lái)實(shí)現(xiàn)的,因此元素時(shí)無(wú)序的,增加,刪除操作的時(shí)間復(fù)雜度是常數(shù)O(1).
TreeSet是由樹(shù)形的結(jié)構(gòu)來(lái)實(shí)現(xiàn)的,里面元素時(shí)有序的。刪除增加操作的時(shí)間復(fù)雜度是O(logn).

●HashMap中的hashCode()和equals()方法的重要性:
當(dāng)進(jìn)行增加操作時(shí),hashCode()用來(lái)定位要存放的位置,如果該位置上存在數(shù)據(jù)了,那么久通過(guò)equals()用來(lái)判斷數(shù)據(jù)是否相等。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容