中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

和龙市| 融水| 绩溪县| 莱州市| 靖宇县| 云和县| 柘城县| 多伦县| 高平市| 通江县| 沂水县| 南宫市| 安达市| 荆门市| 灵丘县| 南川市| 郎溪县| 大渡口区| 阿尔山市| 衡东县| 凤冈县| 石楼县| 栖霞市| 湛江市| 鲁甸县| 科技| SHOW| 阳城县| 武宁县| 宁德市| 镇江市| 兰西县| 威宁| 酒泉市| 涟源市| 蒲江县| 乐业县| 汉川市| 灵石县| 玉林市| 东丰县|