原创 【Java】冒泡排序實現

交換類排序主要是通過兩兩比較待排元素的關鍵字,若發現與排序要求相逆,則“交換”之。在這類排序方法中最常見的是冒泡排序和快速排序。簡單寫一寫冒泡排序。 冒泡排序的思想 首先,將 n 個元素中的第一個元素和第二個元素進行比較,如果兩個元素的位

原创 LinkedHashMap特點(jdk1.8)

結束上篇的HashMap擴容分析,今天來聊聊LinkedHashMap的特點,繼承了HashMap類(以下都是基於jdk1.8)。之前簡單聊過LinkedHashSet的特點,它的底層實際就是使用的LinkedHashMap。 繼

原创 HashTable特點(jdk1.8)

簡單寫一寫HashTable的特點~ 繼承樹 HashTable的繼承樹如下圖: 特點 (1)底層使用Entry數組保存元素 (2)默認初始容量是11,加載因子是0.75。 /** * Constructs a

原创 深入理解HashMap擴容(JDK1.8)---源碼分析

HashMap如何進行put操作? hash值如何計算? 何時進行擴容? 如何擴容? 本篇帶你逐行看源碼~ Let’s start. put方法 * 從HashMap的put方法入手,逐步深入: /** * Assoc

原创 ArrayList源碼分析(jdk1.8)

聊一聊ArrayList的特點吧~(以下都是基於jdk1.8) 繼承樹 ArrayList的繼承樹如下圖: 特點 (1)底層使用動態數組Object[] elementData 來保存所有元素 (2)線程不安全。可通過如下方式

原创 HashMap類註釋解析

結束了Collection集合的summary,現在先來看看Map集合下的HashMap的類註釋。以下都是基於jdk1.8的。 繼承樹 HashMap繼承樹如下圖: HashMap類註釋解析 (1)HashMap是基於Map接口

原创 ArrayDeque源碼分析

愉快地聊一聊ArrayDeque的特點吧~(以下都是基於jdk1.8) 一棵樹 ArrayDeque的繼承樹如下圖: 基本特點 (1)雙端隊列,可從兩端添加、刪除元素。作爲隊列使用時,性能優於LinkedList。作爲棧使用時,

原创 HashMap常量設計目的

HashMap中有哪些常量?這些常量設計的目的是什麼?本篇帶你走近Doug Lea、Josh Bloch、Arthur van Hoff、 Neal Gafter對HashMap的設計。(以下都是基於jdk1.8) 常量設計 (1

原创 PriorityQueue特點-基於源碼分析

愉快地聊一聊PriorityQueue的特點吧~(以下都是基於jdk1.8) 一棵樹 PriorityQueue的繼承樹如下圖: 基本特點 (1)底層使用可變數組Object[ ] queue,數組容量按需增長 (2)它是一個比

原创 Vector擴容機制源碼分析

再來稍微聊一下Vector的特點。 繼承樹 Vector繼承樹如下圖: 特點 (1)允許null值 (2)底層使用動態對象數組Object[] elementData (3)默認初始容量是10,也可通過構造函數指定初始容量(實際

原创 HashMap指定初始容量的構造函數-基於源碼分析

今日主題是源碼分析之HashMap指定初始容量的構造函數(以下都是基於jdk1.8)。 HashMap可以指定初始容量大小的構造函數有兩個: /** * The maximum capacity, used if

原创 LinkedList特點

聊一聊LinkedList的特點吧~(以下都是基於jdk1.8) 繼承樹 LinkedList的繼承樹如下圖: 特點 (1)允許null值 (2)內部以雙向鏈表的形式來保存集合中的元素 /** * Pointer t

原创 HashSet部分源碼分析

  今天來簡單講講HashSet,因爲HashSet實際上是基於HashMap來實現的,底層使用HashMap來保存集合元素,關於HashMap會在接下來的博客中加以介紹,所以這次HashSet就簡單寫一寫了。(以下都是基於jd

原创 Collection集合與Map集合體系

Java集合大致可以分爲Set、List、Queue、Map四種體系,其中set代表無序、不可重複的集合;List代表有序、重複的集合;Map代表具有映射關係的集合;Java5增加的Queue體系代表一種隊列集合實現。 Java的

原创 TreeSet特點

聊一聊TreeSet的特點吧~(以下都是基於jdk1.8) 繼承樹 TreeSet的繼承樹如下圖: 特點 (1)底層使用TreeMap來保存所有元素 (2)線程不安全。可通過如下方式使用線程安全的操作: SortedSet s