91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ArrayList與Vector的異同點有哪些

發布時間:2021-12-18 15:19:11 來源:億速云 閱讀:287 作者:iii 欄目:云計算

本篇內容介紹了“ArrayList與Vector的異同點有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

ArrayList VS Vector

相同點:
	1>都是基于Object數組實現的。
	2>都允許添加null元素。
	
不同點:
	1>ArrayList不是線程安全的,Vector是線程安全的(方法是Synchronized的)。
	2>ArrayList擴容后容量變為之前的1.5倍,Vector擴容后容量是之前的2倍,故ArrayList更省空間。

	容量:
		ArrayList	初始容量:0		擴容:第一次(調用add方法時)擴展為10,之后每次擴展為之前的1.5倍。
			說明:
				1>雖然ArrayList類的初始容量默認為10(private static final int DEFAULT_CAPACITY = 10;)
				2>但實際上在new ArrayList()后,ArrayList的elementData(transient Object[] elementData;)的length為0
				3>在第一次調用add方法時,elementData的length才擴展到10
				4>若之后還需要擴展容量時,容量每次擴展為之前的1.5倍
			
			代碼:
				1>無參構造方法:    		this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; // private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
				2>擴容1.5倍:				newCapacity = oldCapacity + (oldCapacity >> 1);
				3>擴容時對數組進行復制:	elementData = Arrays.copyOf(elementData, newCapacity);
		
		Vector		初始容量:10	擴容:每次擴展為之前的2倍。
			代碼:
				1>無參構造方法:    		this(10);
				2>擴容2倍:					int newCapacity = oldCapacity + ((capacityIncrement > 0) ? capacityIncrement : oldCapacity); // capacityIncrement默認為0 
				3>擴容時對數組進行復制:	elementData = Arrays.copyOf(elementData, newCapacity);

ArrayList VS LinkedList

相同點:
	1>都允許添加null元素。
	
不同點:
	1>對于隨機訪問get和set,ArrayList比LinkedList快。
	2>對于插入和刪除操作,LinkedList比較快。

相關集合:

1)Collections.synchronizedList(List list)
	舉例:
		List<String> syncArraylist = Collections.synchronizedList(new ArrayList<String>());	
		List<String> syncLinkedList = Collections.synchronizedList(new LinkedList<String>());
	說明:
		1>Collections.synchronizedList(List list)實際上是創建了一個java.util.Collections的內部類SynchronizedList。
		2>SynchronizedList只是在自己的方法中使用同步代碼塊將List(封裝的ArrayList、linkedList等)里相應的方法包裹了起來,故SynchronizedList的擴容方式同它封裝的list一樣。
		3>SynchronizedList還可以指定鎖對象,如不指定,默認為this。
	
2)CopyOnWriteArrayList:
	1>使用ReentrantLock來實現線程的同步。
	2>每添加一個元素,就進行一次數組的copy,故CopyOnWriteArrayList的寫性能非常的糟糕。
	3>多線程環境下,CopyOnWriteArrayList的讀性能比Collections.SynchronizedList的讀性能好一些(后者的get方法也被同步代碼塊包裹了,故讀性能稍差一點)。


3)Stack繼承自Vector,新增了push、pop方法。

“ArrayList與Vector的異同點有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武陟县| 海晏县| 玛多县| 吴堡县| 翁牛特旗| 措美县| 亚东县| 中宁县| 白银市| 永济市| 夏河县| 开阳县| 濉溪县| 棋牌| 九寨沟县| 岳阳县| 卢龙县| 宜都市| 咸阳市| 通化县| 遂宁市| 苏尼特右旗| 比如县| 湘西| 手游| 铁岭市| 如皋市| 阜城县| 侯马市| 阿克陶县| 乐亭县| 子长县| 来宾市| 广河县| 信宜市| 潍坊市| 呼玛县| 图片| 鄯善县| 涡阳县| 阳原县|