Java一些八卦集合類
Map 和 Set關係
Map和Set事實基礎的朋友,有著千絲萬縷的聯絡。
Map它可以被看作是Set延期。從何時起Set內容儲存在key-value的值當表單。這個Set實際上可以作為Map使用。反過來,Map事實上,有一個Map.Entry內部介面。而Map在存放值對時,全然不考慮value,而僅僅考慮key,因此Map也能夠看成是一個存key的Set,而value僅僅是key的附屬物。
HashMap加入元素時,依據key的hashCode進行再雜湊計算得到值來決定存放位置。HashMap底層有個陣列Entry[],依據hash值來決定key-value存在陣列的哪個元素,而Entry[]實際上是一個table。
HashSet底層是居於HashMap來實現的。HashSet底層用HashMap來儲存全部元素,這些元素作為HashMap的key,而相應的Value是一個名為PRESENT的static final的Object物件。對HashSet操作的方法都呼叫HashMap的方法進行操作。
元素是否反覆,要同一時候推斷元素物件的hashCode()和equals(),hashCode相等且equals返還true時才覺得是反覆元素,不進行替換。
TreeSet和TreeMap的關係也是非常相似的,即TreeSet底層是採用TreeMap儲存的。TreeMap採用紅黑樹的排序二叉樹來儲存Map中的每一個Entry(樹節點)。
List的三個實現:ArrayList,Vector和LinkedList。
Vector還有個兒子Stack,Stack不過在Vector的基礎上加入了5個方法,只五個方法的程式碼就將Vector變成了Stack,Stack依舊是一個Vector,它繼承了Vector的synchronized血統,都是執行緒安全的。從JDK1.6開始,Java提供了Deque介面並提供了實現類ArrayDeque,即使程式中須要棧這種資料結構,也不推薦使用Stack而推薦使用Deque。除非要求執行緒安全。
Deque是雙端佇列。是佇列但同一時候擁有棧的功能。底層都是陣列實現。
Vector差點兒被ArrayList取代了,它唯一的優點是執行緒安全。
如今甚至為了執行緒安全也不用Vector了。能夠通過Collections工具類的synchronizedList()方法將一個普通的ArrayList包裝成執行緒安全的ArrayList。
ArrayList 和LinkedList
ArrayList底層是基於陣列實現的。所以ArrayList建立的時候有個初始的capacity,提供了構造方法,程式設計者能夠在建立ArrayList時指定初始的capacity。假設沒有顯式提供capacity,那麼程式預設設定為10.LinkedList是雙向列表儲存結構,不僅實現List介面,還實現Deque雙端佇列介面。
版權宣告:本文部落格原創文章,部落格,未經同意,不得轉載。
本文轉自mfrbuaa部落格園部落格,原文連結:http://www.cnblogs.com/mfrbuaa/p/4637109.html,如需轉載請自行聯絡原作者
相關文章
- 集合類【Java】Java
- Java集合類初探Java
- Java集合類——MapJava
- Java集合類綜合Java
- Java —— 集合工具類(Collections 類)Java
- java 所有的集合類以及Apache的集合類???JavaApache
- Java 集合類——Collections(1)Java
- Java 集合類——Collections(3)Java
- Java 集合類——Collections(2)Java
- Java集合類的概述Java
- java集合類介紹Java
- Java集合類詳解Java
- Java集合類原始碼Java原始碼
- Java 集合類入門篇Java
- 【Java原始碼】集合類-ArrayDequeJava原始碼
- 常用Java集合類總結Java
- Java集合類初步瞭解Java
- Java集合類知識整理Java
- java學習(七) —— API集合類JavaAPI
- BAT面試必備——Java 集合類BAT面試Java
- Java集合類學習總結Java
- Java集合類:AbstractCollection原始碼解析Java原始碼
- Java集合系列(一):集合的定義及分類Java
- java集合類——Stack棧類與Queue佇列Java佇列
- Java集合框架中的介面和類Java框架
- 【Java】Java容器篇(二),深入理解List集合類Java
- Java集合詳解8:Java集合類細節精講,細節決定成敗Java
- Java併發-執行緒安全的集合類Java執行緒
- Java 理論與實踐: 併發集合類Java
- Java中常見的集合容器類關係圖Java
- Java集合類操作優化經驗總結Java優化
- Java集合類常見面試知識點總結Java面試
- Java集合類操作最佳化經驗總結Java
- 你必須知道的幾種java容器(集合類)Java
- Java集合類: Set、List、Map、Queue使用場景梳理Java
- Java執行緒安全的集合類:Map、List、SetJava執行緒
- JAVA集合類簡要筆記 - 內部類 包裝類 Object類 String類 BigDecimal類 system類Java筆記ObjectDecimal
- 【Java集合】1 集合概述Java