前前后后分析了三遍這個雙端隊列,但是一直沒有去寫一篇文章,中途有些事情給耽擱了,所以這次就來輸出了,這是自己關于分析集合類的第13篇源碼分析的文章,繼續(xù)分析吧。
還是以以往的文章風格先看下類的繼承結構,這樣可以做到心中有數,比較靠譜一點。源碼的設計就是滿足java作為一門高級語言特性所具有的,單繼承以及多實現。
一,像集合類的容器,你就把它想象成裝載數據的集合就行了,我們利用這樣的集合去往其中添加元素,一般都是add()方法,put()方法,offer()方法之類的,這里就看下add()方法的實現原理吧,代碼里面直接給與了說明,這里就不過多介紹了。
二,上面也說過,添加元素除了使用常用的add()方法,一般也會使用offer()這樣的方法,其實調用底層的方法都一樣,這里就繼續(xù)看下offer()的源碼流程吧。
三,對于我來說,個人的感受使用集合類常用的方法除了裝填數據外,集合的數據大小以及是否為空還是比較常用的,這里就看下size()方法和isEmpty()方法的實現吧。
四,既然雙端隊列比一般隊列那么特殊一點,即可以從隊首獲取元素,也可以從隊尾獲取元素,所以這里繼續(xù)看下如何從隊首獲取元素的方法,這里自己看了一下有好幾個都是獲取隊首元素方法的,所以就一次性分析了,區(qū)別就是是否從隊列出來了,是否進行了gc回收。
五,上面介紹的是從隊首獲取元素的,接下來就是從隊尾進行元素獲取的,這里自己也是一次性將從隊尾獲取元素的方法分析完,這算是和自己以后寫文章的方式很像了,一個一個系列的去寫,這樣自己會覺得深入一點比較好一點。
六,比如說我們去判斷一個元素在不在這個集合中,一般都會使用contains()方法或者自己實現一個方法進行判斷。這里看下contains()方法源碼分析吧,很簡單,和以往的分析方式大同小異。
七,一般使用集合,我都會自己去分析一下clear()方法的使用,這樣才會覺得整個集合分析完了。
到這里整個ArrayDeque雙端隊列的源碼分析就結束了,自己就是將大部分常用的方法進行了分析,其它沒有分析的方法,需要的你可以看下,這里就不過多說明了,分析一篇文章確實耗時很長,可能你看這篇文章也就幾分鐘,但是輸出一篇文章卻要花費很長時間,這就是寫文章比較耗時的地方。
我喜歡分享,你喜歡閱讀@WwpwW