<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Java集合類框架

          共 2021字,需瀏覽 5分鐘

           ·

          2021-01-19 18:08

          Python實戰(zhàn)社群

          Java實戰(zhàn)社群

          長按識別下方二維碼,按需求添加

          掃碼關(guān)注添加客服

          進(jìn)Python社群▲

          掃碼關(guān)注添加客服

          進(jìn)Java社群


          作者丨Henry扶蘇

          來源丨Henry扶蘇

          簡介

          ????????在平時的開發(fā)里我們經(jīng)常用到集合框架,比如ArrayList、HashMap、HashTable、HashSet,但是你有沒有否關(guān)注過在某種特殊的場景下是否還有其它功能一樣但效率更高、容錯率更高的框架呢。其實我們常用的集合框架完全能幫我們解決問題,但作為一個不安分的程序員,在閑下來之后總是想試著分析分析其它的。說干就干,首先我們先要把我們的一些集合框架列出來再分別介紹,一圖勝千言:?

          ????????唉!作圖的天分實在是太差,湊合看吧。上面是自己通過官方文檔和其它渠道總結(jié)的,目測應(yīng)該是算比較全面的了,如果有遺漏后邊會繼續(xù)補充。不整理不知道,原來有這么多數(shù)據(jù)結(jié)構(gòu)框架和衍生版本,不知道是自己的知識儲備太差還是平時關(guān)注比較少,雖然這里邊有一些已經(jīng)不推薦使用了,但我還是想全面了解一下,畢竟不會有壞處。

          ?本來想總結(jié)幾篇常用的數(shù)據(jù)結(jié)構(gòu)框架,但看在這么多不認(rèn)識的,姑且多總結(jié)一些吧。這片就對這些進(jìn)行一些總體的總結(jié),后邊單開章節(jié)來分別介紹,首先把他們的大致用法和解釋標(biāo)注一下,總結(jié)的不好,如果發(fā)現(xiàn)有錯誤我會及時修改。我在寫博客的時候有個習(xí)慣,非常喜歡用圖來表示,總感覺文字太多了會有些難以看見去,并不是說文字描述不好,可能還是自己的文字功底太差導(dǎo)致的吧!廢話不多說,下面進(jìn)行簡單總結(jié):

          ????????關(guān)于基礎(chǔ)的Set、Map、List、Queue這些數(shù)據(jù)結(jié)構(gòu)這里不做過多的描述,大部分程序員對這些都是又一些概念的,依稀主要對以實現(xiàn)類在單線程和多線程的使用上進(jìn)行區(qū)分


          單線程并發(fā)
          ListArrayList :Java 動態(tài)數(shù)組LinkedList:線性數(shù)據(jù)結(jié)構(gòu)CopyOnWriteArrayList:是一個線程安全的ArrayList,做遍歷用Vector:支持線程同步的動態(tài)數(shù)組
          QueueDequeArrayDeque:雙端隊列實現(xiàn)Stack:標(biāo)準(zhǔn)的后進(jìn)先出的棧PriorityQueue:通過二叉小頂堆實現(xiàn)

          ArrayBlockingQueue:數(shù)組實現(xiàn)的線程安全的有界的阻塞隊列

          ConcurrentLinkedDeque / ConcurrentLinkedQueue:非阻塞,無鎖,無界 ,線程安全雙端操作的隊列DelayQueue:在指定時間才能獲取隊列元素LinkedBlockingDeque / LinkedBlockingQueue:可選容量的有界雙向鏈表隊列,可設(shè)置是否帶邊界

          LinkedTransferQueue:可將元素transfer進(jìn)行w/o存儲PriorityBlockingQueue:支持優(yōu)先級的無界阻塞隊列

          SynchronousQueue:使用Queue接口進(jìn)行Exchanger

          Map

          HashMap:散列表,存放Key-Value的數(shù)據(jù)結(jié)構(gòu)EnumMap:Key 可以是Enum類型的對象

          Hashtable:基于Dictionary類實現(xiàn)的比較陳舊

          IdentityHashMap:嚴(yán)格判斷key值是否相等

          LinkedHashMap:保持插入順序

          TreeMap:對插入的鍵進(jìn)行排序

          WeakHashMap:適用于做一些緩存操作

          ConcurrentHashMap:它是HashMap的一個線程安全的、支持高效并發(fā)的版本

          ConcurrentSkipListMap:一個并發(fā)安全, 基于skip list 實現(xiàn)有序存儲的Map

          Set

          HashSet:存儲元素不可重復(fù),底層基于

          HashMapEnumSet:專門為

          Eunm設(shè)計的集合

          類BitSet:Bit或密集的整數(shù)SetLinkedHashSet:保持Key插入順序TreeSet:有序集合

          ConcurrentSkipListSet:排序并發(fā)

          SetCopyOnWriteArraySet:做遍歷用

          ????????上邊對這些集合類做了一些總結(jié),幾乎每個應(yīng)用場景都有對應(yīng)的功能,現(xiàn)在回想起來以前代碼寫的確實性能欠佳,如果替換成以上的性能估計會提升不少,所以后面嘗試對自己的應(yīng)用做一些數(shù)據(jù)方面的性能處理。這一篇寫到這里,后邊會把一些集合類拿出來分析,預(yù)計能提升不少的見識。剛開始寫博客確實語言組織方面差點,不過相信堅持一段時間之后會有提升的。?

          程序員專欄
          ?掃碼關(guān)注填加客服?
          長按識別下方二維碼進(jìn)群

          近期精彩內(nèi)容推薦:??

          ?阿里徹底拆中臺了!

          ?程序員相親圖鑒

          ?21 歲理工男開源的這個編輯器火了!

          ?996 違法???





          在看點這里好文分享給更多人↓↓

          瀏覽 22
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产一呦二呦三呦 | 激情在线视频韩国青青 | 夜丝袜噜噜亚洲精品AV | 黄色一级操逼 | www-91AV |