java集合類原始碼詳解-LinkedList(4)-基於JDK8
LinkedList 裡面還有個具有新增功能的函式,上回學漏了,這回補上。
它就是linkBefore()------在一個非空節點前,插入資料
這裡打上個斷點
點選下一步。先把size除二 ,去比較。具體的這個node()方法,我們之前學過,這裡跳過。這個方法,其實就是返回我們要查詢索引位的節點的地址。
然後我們再點選下一步,這裡的第一步,第二步,第三步。我們都看到很多次這種套路了,因為我們要在succ節點前插入資料e,
所以先儲存這個節點的前置節點的地址給 pred。 然後建立新節點,把e 放進這個新節點,然後讓新節點指向 succ節點的前置節點,並且讓新節點指向這個succ節點。 然後讓 succ的前置節點 也指向新節點,因為我們的連結串列是雙向連結串列
這裡再次點選下一步。這裡需要判斷 是否succ的前置節點是否為空,也就是succ是否是第一個節點
如果為null(說明succ是第一個節點),那麼就把first 引用新節點,那麼就是把的新節點作為第一個節點。這裡我們是false
再次點選下一步。讓 succ的前置節點 指向新節點,然後size++,modCount++,這個方法就呼叫結束了。
下面是圖解:
相關推薦
java集合類原始碼詳解-LinkedList(4)-基於JDK8
LinkedList 裡面還有個具有新增功能的函式,上回學漏了,這回補上。 它就是linkBefore()------在一個非空節點前,插入資料 這裡打上個斷點 點選下一步。先把size除二 ,去比較。具體的這個node()方法,我們之前學過,這裡跳過。這個方法,其實就
java集合類原始碼詳解-ArrayList(2)
上次關於ArrayList的結構沒有做總結。這次還是補充在自己部落格裡面吧。 ArrayList繼承自一個抽象類。實現了四個介面。 AbstractList繼承自AbstractCollection。AbstractCollection繼承自Object。 ArrayL
java集合類原始碼詳解-ArrayList(5)
上次,測試了java集合類支援遍歷方式的效率比較,今天再通過斷電除錯,去ArrayList底層的迭代器做了什麼。 首先在迭代器這裡打上斷電,(在實際中變數ArrayList最後別用迭代器,因為他很慢) 可以看到這個iterator()方法返回值是一個迭代器,函式體是r
java集合類原始碼詳解-ArrayList(1)
最近在瘋狂的補基礎 在java中 最重要的知識之一 非集合類莫屬。這次在學習java集合類原始碼,採用的是傳統的方法,斷點除錯和寫測試程式碼。由於是剛開始接觸java集合類原始碼。所以一開始只寫了兩句程式碼來測試,畢竟原始碼學習是很緩慢的過程。只能慢慢的啃。在閱
java Object類原始碼詳解 及nativ
Java程式碼 package java.lang; publicclass Object { /* 一個本地方法,具體是用C(C++)在DLL中實現的,然後通過JNI呼叫。*/ privatestaticnativevoid registerNativ
Java之集合類總結詳解
本文主要關注Java程式設計中涉及到的各種集合類,以及它們的使用場景。 1. Java集合類基本概念 在程式設計中,常常需要集中存放多個數據。從傳統意義上講,陣列是我們的一個很好的選擇,前提是我們事先已經明確知道我們將要儲存的物件的數量。一旦在陣列初始化時指定了這個陣列長度,這個陣列長度就是
(五)Java工具類ArrayUtils詳解
說明:ArrayUtils工具類在標準的應用程式中是不可以被例項化的: 參考:[參考地址](http://commons.apache.org/proper/commons-lang/javadocs/api-release/) 1 2 public static bool
(九)Java工具類DateFormatUtils詳解
日期和時間格式化實用程式和常量 public static String format(Calendar calendar, String pattern) 說明:將日曆格式化為特定的模式; 引數:calendar-格式化的日曆物件,非null;p
(二十九)Java工具類ThreadUtils詳解
原文連結:https://blog.csdn.net/yaomingyang/article/details/79320387前言:ThreadUtils是對於java.lang.Thread和java.lang.ThreadGroup的擴充套件和幫助;1.建構函式publi
Java 集合之 Set 詳解與原始碼分析
Set集合與List一樣,都是繼承自Collection介面,常用的實現類有HashSet和TreeSet。值得注意的是,HashSet是通過HashMap來實現的而TreeSet是通過TreeMap來實現的,所以HashSet和TreeSet都沒有自己的資料結構,具
Java集合類原始碼解析:AbstractMap
目錄 引言 原始碼解析 抽象函式entrySet() 兩個集合檢視 操作方法 兩個子類 參考: 引言 今天學習一個Java集合的一個抽象類 AbstractMap ,AbstractMap 是Map介面的 實現類之一,也是HashMap、T
Java集合類原始碼解析:HashMap (基於JDK1.8)
目錄 前言 HashMap的資料結構 深入原始碼 兩個引數 成員變數 四個構造方法 插入資料的方法:put() 雜湊函式:hash() 動態擴容:resize() 節點樹化、紅黑樹的拆分 節點樹化
Java集合類原始碼解析:Vector
引言 之前的文章我們學習了一個集合類 ArrayList,今天講它的一個兄弟 Vector。 為什麼說是它兄弟呢?因為從容器的構造來說,Vector 簡直就是 ArrayList 的翻版,也是基於陣列的資料結構,不同的是,Vector的每個方法都加了 synchronized 修飾符,是執行緒安全的。 類
Java集合類原始碼解析:ArrayList
目錄 前言 今天學習一個Java集合類使用最多的類 ArrayList , ArrayList 繼承了 AbstractList,並實現了List 和 RandomAccess 等介面, public class ArrayList<E> extends AbstractList<E>
Java集合類原始碼解析:LinkedHashMap
前言 今天繼續學習關於Map家族的另一個類 LinkedHashMap 。先說明一下,LinkedHashMap 是繼承於 HashMap 的,所以本文只針對 LinkedHashMap 的特性學習,跟HashMap 相關的一些特性就不做進一步的解析了,大家有疑惑的可以看之前的博文。 深入解析 LinkedH
Java集合類原始碼閱讀之AbstractCollection
private static <T> T[] finishToArray(T[] r, Iterator<?> it) { int i = r.length; while (it.hasNext()) { int cap = r.
Java8 ThreadLocal類原始碼 詳解
JDK裡有一個ThreadLocal這麼一個類,其實起這個名字不是很貼近,這個類相當於給執行緒設定上了一個區域性變數。使得,不會因為多執行緒訪問同一個資源而產生多執行緒同步問題。 因為這個ThreadLocal類裡面放的是每個執行緒都擁有一個副本,執行緒之間彼此不會互相影響
java 集合之TreeSet詳解
首先說明一下,之前看了一下文章提出TreeSet在新增第一個元素的時候是不比較大小的,這種說發是錯誤的,在第一次新增的時候比較的是第一個物件本省返回的引數是0,下面我們用程式驗證一下:首先由一個Student的內部類:裡面有兩個引數,年齡和名稱我們後期自定義排序也是用得到的。
《Java基礎與案例開發詳解》(六)
註解 定義:是用來為程式元素(類、方法、成員變數)設定說明和解釋的一種元資料。 註解標記是可以在編譯、類載入、執行的時候讀取。 註解表現形式 Java註解採用“@”標記形式,後面跟上註解型別名稱。 註解型別和註解的區別: 註解型別是
ggplot2作圖詳解7(完):主題(theme)設置
clas base 參數 由於 end 文字標簽 cut evaluate minor 凡是和數據無關的圖形設置內容理論上都可以歸為主題類,但考慮到一些內容(如坐標軸)的特殊性,可以允許例外的情況。主題的設置相當繁瑣,很容易就占用了 大量的作圖時間,應盡量把這些東西簡化,把