亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

衡山县| 维西| 望奎县| 衢州市| 凤凰县| 衡东县| 封丘县| 克什克腾旗| 蒙山县| 丹阳市| 迁安市| 黔江区| 阜宁县| 冕宁县| 宜春市| 勐海县| 吕梁市| 佛山市| 黔西| 安丘市| 苏州市| 长葛市| 株洲县| 迭部县| 临潭县| 大名县| 朔州市| 象山县| 东乌珠穆沁旗| 双牌县| 鄯善县| 九龙城区| 刚察县| 芒康县| 遂溪县| 莒南县| 新巴尔虎右旗| 宝丰县| 威宁| 齐河县| 贡觉县|