摘要:前言原文在點這里,這也是作者的個人網(wǎng)站,希望多多支持,對于作者而言,集合主要分為兩個派系,一個是系列,一個是系列。的線程安全版本,內(nèi)部的實現(xiàn)幾乎和一模一樣。也是的線程安全版本,并且使用了分段加鎖機制,所以效率上要比要好很多。
前言
原文在: 點這里,這也是作者的個人網(wǎng)站,希望多多支持,O(∩_∩)O~
對于作者而言,Java 集合主要分為兩個派系,一個是 Collection 系列,一個是 Map 系列。
Collection 系列如下圖所示:
那么對于他們的特點,簡單來說可以概括為:
Collection:它是一個根接口,JDK沒有它的實現(xiàn)類,內(nèi)部僅僅做 add(),remove(),contains(),size() 等方法的聲明。
List:它繼承于 Collection,增加了可以對每個元素插入的位置進行精確的控制的方法,另外,插入的值允許為空,也允許有重復(fù)的值。
實現(xiàn)類 | 實現(xiàn)方式 | 是否同步 | 是否支持插入空值 | 元素是否支持重復(fù) |
---|---|---|---|---|
ArrayList | 數(shù)組 | 不同步 | 支持 | 支持 |
Vector | 數(shù)組 | 同步 | 支持 | 支持 |
LinkedList | 鏈表 | 不同步 | 支持 | 支持 |
那么對于每一個類(接口)的細節(jié),可以看:
Java 集合:Collection,List,ArrayList,Vector,LinkedList(實現(xiàn)方式,對比)
Map那么對于他們的特點,簡單來說可以概括為:
HashMap:最常用的 Map,非同步,不保證順序。允許有空值和空鍵。 采用鏈表法解決哈希沖突,并且在發(fā)生哈希沖突的時候,新的 Node 會加入到鏈表的最下端;在 JDK8 中哈希沖突過多的情況下鏈表會變成紅黑樹從而保證效率;
LinkedHashMap:繼承HashMap,Iterator下 能保證插入的先后順序,原理是在LinkedHashMap中加入了鏈表,并且該鏈表還是一個雙向鏈表。
TreeMap:能夠根據(jù) key 值來有序插入 (也就是鍵值對會根據(jù)key排序好),原理使用了紅黑樹,每次插入都會對樹進行調(diào)整。
HashTable:HashMap的線程安全版本,內(nèi)部的實現(xiàn)幾乎和 HashMap 一模一樣。但是由于其同步是使用了 synchronized,效率較低。
ConcurrentHashMap:也是HashMap的線程安全版本,并且使用了分段加鎖機制,所以效率上要比HashTable要好很多。
那么對于每一個類(接口)的細節(jié),可以看:
Java 集合:HashMap(put方法的實現(xiàn) 與 哈希沖突)
Java 集合:LinkedHashMap 工作原理及實現(xiàn)(轉(zhuǎn)載)
Java 集合:HashSet,HashTable,以及 ConcurrentHashMap 概念
Java 集合:TreeMap 工作原理及實現(xiàn)(轉(zhuǎn)載)
最后作者也是一名Java新手,上述有些是基于自己的理解作出的總結(jié),有些是轉(zhuǎn)載別人的文章,如果有什么錯誤的地方,還麻煩各位斧正,由于沒做評論的功能,所以暫時 github issue 地址:點這里
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64911.html
摘要:而在集合中,值僅僅是一個對象罷了該對象對本身而言是無用的。將這篇文章作為集合的總結(jié)篇,但覺得沒什么好寫就回答一些面試題去了,找了一會面試題又覺得不夠系統(tǒng)。 前言 聲明,本文用的是jdk1.8 花了一個星期,把Java容器核心的知識過了一遍,感覺集合已經(jīng)無所畏懼了!!(哈哈哈....),現(xiàn)在來總結(jié)一下吧~~ 回顧目錄: Collection總覽 List集合就這么簡單【源碼剖析】 Ma...
摘要:可能是最流行的集合類型。它是一個范性有序的集合。一個無序并不支持重復(fù)的集合。接口繼承接口,集合中可以存放重復(fù)對象。集合類提供了,等高階函數(shù)去處理。我們聲明一個集合或者數(shù)組,可以轉(zhuǎn)換成相應(yīng)類型的集合。調(diào)用轉(zhuǎn)換為可變集合。 不積跬步無以至千里,不積小流無以成江海 先看看Kotlin中for循環(huán)的遍歷 fun testList(){ var StringVal = 12_...
摘要:集合工具包是在包中,實現(xiàn)了數(shù)據(jù)結(jié)構(gòu)數(shù)組棧鏈表隊列映射和集合。集合主要可以劃分為個部分列表集合映射工具類迭代器枚舉類和。集合的框架圖如下圖片來源集合頂層接口主要有和。和都是集合遍歷相關(guān)接口,是特有的遍歷工具接口 Java集合工具包是在java.util.*包中,實現(xiàn)了數(shù)據(jù)結(jié)構(gòu):數(shù)組、棧、鏈表、隊列、映射和集合。Java集合主要可以劃分為4個部分:List列表、Set集合、Map映射、工具...
閱讀 3257·2021-11-11 11:00
閱讀 2574·2019-08-29 11:23
閱讀 1457·2019-08-29 10:58
閱讀 2339·2019-08-29 10:58
閱讀 2963·2019-08-23 18:26
閱讀 2520·2019-08-23 18:18
閱讀 2049·2019-08-23 16:53
閱讀 3424·2019-08-23 13:13