Java容器
集合是一種存儲(chǔ)數(shù)據(jù)的容器,是Java開(kāi)發(fā)中使用最頻繁的對(duì)象類型之一.
或許提起Collection,,都會(huì)第一時(shí)間意識(shí)到List和Set以及Map等相關(guān)關(guān)鍵詞,。因?yàn)檫@幾乎是我們?nèi)粘i_(kāi)發(fā)里接觸最多和遇見(jiàn)最頻繁的,以及與數(shù)據(jù)處理交互最多的Java對(duì)象類型,。換句話說(shuō),,就是我們與數(shù)據(jù)進(jìn)行處理的數(shù)據(jù)對(duì)象存儲(chǔ)模型。但是:
List->[AbstractList,ArrayList,AbstractSeaquentialList,LinkedList]
Set->[AbstractSet,HashSet,SortedSet,TreeSet,LinkedHashSet]
Map->[AbstractMap,SortedMap,TreeMap,HashMap,LinkedHashMap,ConcurrentHashMap]
Collection容器
Collection容器包含List和Set以及Queue子容器,。
List接口
List接口的實(shí)現(xiàn)類主要有:ArrayList,、LinkedList、Stack以及Vector等
ArrayList[線程不安全]
- ArrayList-uml結(jié)構(gòu)圖:
LinkedList
- LinkedList-uml結(jié)構(gòu)圖:
Stack
- Stack-uml結(jié)構(gòu)圖:
Vector
- Vector-uml結(jié)構(gòu)圖:
Set容器
Set接口的實(shí)現(xiàn)類主要有:HashSet,、TreeSet,、LinkedHashSet等
Queue容器
Map容器
Map是一個(gè)鍵值對(duì)集合,存儲(chǔ)鍵,、值和之間的映射。Key無(wú)序,,唯一,;value 不要求有序,允許重復(fù),。Map沒(méi)有繼承于Collection接口,,從Map集合中時(shí),只要給出鍵對(duì)象,,就會(huì)返回對(duì)應(yīng)的值對(duì)象,。
在使用Java開(kāi)發(fā)分布式系統(tǒng)以及應(yīng)對(duì)高并發(fā)場(chǎng)景的情況,看得最多的就是在并發(fā)場(chǎng)景中切忌使用HashMap,。也是最近幾年面試熱題之一,,主要原因:
- [1].在JDK1.8版本之前,并發(fā)場(chǎng)景使用HashMap會(huì)導(dǎo)致出現(xiàn)死循環(huán),,從而導(dǎo)致CPU使用率會(huì)居高不下,,這主要是JDK在設(shè)計(jì)HashMap擴(kuò)容機(jī)制的局限導(dǎo)致。
- [2]在JDK1.8版本之后,,雖然修復(fù)了HashMap擴(kuò)容導(dǎo)致死循環(huán)的問(wèn)題,,但是在高并發(fā)場(chǎng)景下,依然會(huì)出現(xiàn)數(shù)據(jù)丟失以及不準(zhǔn)確的情況發(fā)生,。
Map的常用實(shí)現(xiàn)類:HashMap,、TreeMap、HashTable、LinkedHashMap,、ConcurrentHashMap以及Properties等
HashMap[線程不安全]
[1].在JDK1.7中,,當(dāng)并發(fā)執(zhí)行擴(kuò)容操作時(shí)會(huì)造成環(huán)形鏈和數(shù)據(jù)丟失的情況
[2].在JDK1.8中,在并發(fā)執(zhí)行put操作時(shí)會(huì)發(fā)生數(shù)據(jù)覆蓋的情況
HashMap有擴(kuò)容機(jī)制,,就是當(dāng)達(dá)到擴(kuò)容條件時(shí)會(huì)進(jìn)行擴(kuò)容:
[1].當(dāng)HashMap中的元素個(gè)數(shù)(size)超過(guò)臨界值(threshold)時(shí)就會(huì)自動(dòng)擴(kuò)容,。
[2].在HashMap中,threshold = loadFactor * capacity
TreeMap
- TreeMap-uml結(jié)構(gòu)圖:
HashTable
- HashTable-uml結(jié)構(gòu)圖:
ConcurrentHashMap[線程安全]
- ConcurrentHashMap-uml結(jié)構(gòu)圖:
Properties
- Properties-uml結(jié)構(gòu)圖:
Iterator容器
版權(quán)聲明:本文為博主原創(chuàng)文章,,遵循相關(guān)版權(quán)協(xié)議,,如若轉(zhuǎn)載或者分享請(qǐng)附上原文出處鏈接和鏈接來(lái)源。
|