參考博文:
java集合的擴容機制_這個名字先用著的博客-CSDN博客
# ArrayList
可隨著元素的增長而自動擴容,正常擴容的話,每次擴容到原來的 1.5倍。
# ArrayList 和Vector擴容機制總結:
ArrayList 和Vector,底層都是Object數組,
默認加載因子都是:1(元素滿了才擴展容量).
默認容量都是:10(但是ArrayList 在jdk1.8時默認為空,當添加元素時,才初始化為10個容量。)
ArrayList:新容量為原容量的 1.5倍,Vector:新容量為原容量的 2倍.
# HashSet和HashMap擴容機制總結:
HashSet和HashMap都是默認初始容量是16(jdk1.7的),但是jdk1.8做了優化,初始容量為0,第一次存元素的時候才擴容為16,
加載因子是:0.75,
擴容為原來的:2倍。
# Hashtable
默認初始容量 :11。
擴容加載因子 :0.75(當超出默認長度(int)(11*0.75)=8時,擴容為 oldx2+1。新容量為原容量的2倍+1. 【int newCapacity = (oldCapacity << 1) + 1;】
# StringBuilder和StringBuffer
初始容量都是:16 ,程序猿盡量手動設置初始值。以避免多次擴容所帶來的性能問題。
默認數組容量擴充為原數組容量的 2倍+2。
# 沒有擴容機制:
LinkedList:沒有擴容機制,因為其底層是雙向鏈表結構
LinkedHashSet,TreeSet沒有數組的擴容機制。