摘要:不同點是線程安全的,方法有關鍵字修飾。容量增長策略默認的增長策略是每次在原容量的基礎上。的怎么做到線程安全的實現了自己的,為了保證并發線程安全的共享一個,開發者在等方法中也加入了。與類繼承自,的實現不止一種方式,比如。
java.util.Vector
Vector與ArrayList的異同相同點:隨機存取,可通過位置序號直接獲取數據。都是通過一個數組來存放元素。
不同點:Vector是線程安全的,方法有synchronized關鍵字修飾。
Vector容量增長策略Vector默認的增長策略是每次在原容量的基礎上x2。
Vector的ListIterator怎么做到線程安全的Vector實現了自己的iterator,為了保證并發線程安全的共享一個Vector,開發者在next等方法中也加入了synchronized。
public E next() { synchronized (Vector.this) { checkForComodification(); int i = cursor; if (i >= elementCount) throw new NoSuchElementException(); cursor = i + 1; return elementData(lastRet = i); } }
這里synchronized修飾的是Vector.this對象本身,而不是iterator自己,這樣多個線程使用iterator操作Vector時,就可以保證線程的安全。
Vector與ArrayList實現的Spliterator類似唯一的區別就是在使用自己的Vector時,加上了synchronized關鍵字。
Stack與VectorStack類繼承自Vector,stack的實現不止一種方式,比如LinkedList。java中在Vector基礎上實現了一個Stack。實現的想法也很簡單,就是在數組的末尾push和pop。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67830.html
摘要:容器相關的操作及其源碼分析說明本文是基于分析的。通常,我們通過迭代器來遍歷集合。是接口所特有的,在接口中,通過返回一個對象。為了偷懶啊,底層使用了迭代器。即返回的和原在元素上保持一致,但不可修改。 容器相關的操作及其源碼分析 說明 1、本文是基于JDK 7 分析的。JDK 8 待我工作了得好好研究下。Lambda、Stream。 2、本文會貼出大量的官方注釋文檔,強迫自己學英語,篇幅...
摘要:說一說迭代器通過集合對象獲取其對應的對象判斷是否存在下一個元素取出該元素并將迭代器對象指向下一個元素取出元素的方式迭代器。對于使用容器者而言,具體的實現不重要,只要通過容器獲取到該實現的迭代器的對象即可,也就是方法。 前言 歡迎關注微信公眾號:Coder編程獲取最新原創技術文章和相關免費學習資料,隨時隨地學習技術知識!** 本章主要介紹Collection集合相關知識,結合面試中會提到...
摘要:底層使用的是雙向鏈表數據結構之前為循環鏈表,取消了循環。快速隨機訪問就是通過元素的序號快速獲取元素對象對應于方法。而接口就是用來標識該類支持快速隨機訪問。僅僅是起標識作用。,中文名為雙端隊列。不同的是,是線程安全的,內部使用了進行同步。 前言 學習情況記錄 時間:week 2 SMART子目標 :Java 容器 記錄在學習Java容器 知識點中,關于List的需要重點記錄的知識點。...
摘要:集合類關系是和的父接口。相等必須是對稱的,約定只能和其它相等,亦然。和接口在中引入,這個單詞是和的合成,用來分割集合以給并行處理提供方便。這些并不立即執行,而是等到最后一個函數,統一執行。 集合類關系: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ...
閱讀 2803·2023-04-25 23:08
閱讀 1591·2021-11-23 09:51
閱讀 1570·2021-10-27 14:18
閱讀 3123·2019-08-29 13:25
閱讀 2838·2019-08-29 13:14
閱讀 2907·2019-08-26 18:36
閱讀 2197·2019-08-26 12:11
閱讀 819·2019-08-26 11:29