List部分方法的簡單測試
1> ArrayList
ArrayList採用的擴容機制(預設取0,add時自動取10,1.5倍擴容
)
測試該擴容機制
/**
* >> 有符號右移
* >>> 無符號右移
*/
public class ListTest {
public static void main(String[] args) {
int oldCapacity = 10;
System.out.println(1 >> 1); // 0
System.out.println(-1 >> 1); // -1
System.out.println(1 >> 2); // 0
System.out.println(1 >>> 1); // 0
System.out.println(-1 >>> 1); // 2147483647
System.out.println(1 >>> 2); // 0
int newCapacity = oldCapacity + (oldCapacity >> 1);
System.out.println(newCapacity); // 15
int a = 12;
int b = 26;
int c = 33;
System.out.println(a+(a>>1)); // 18 = 12+6
System.out.println(b+(b>>1)); // 39 = 26+13
System.out.println(c+(c>>1)); // 49 = 33+16
System.out.println(c*1.5); // 49.5
System.out.println(Math.round(c*1.5)); // 50:long
System.out.println(Math.ceil(c*1.5)); // 50.0:double
System.out.println(Math.floor(c*1.5)); // 49.0:double
System.out.println(c*1.5*(-1)); // -49.5
System.out.println(Math.round(c*1.5*(-1))); // -49:long
System.out.println(Math.ceil(c*1.5*(-1))); // -49.0:double
System.out.println(Math.floor(c*1.5*(-1))); // -50.0:double
}
}
2> LinkedList
LinkedList內部的Node
LinkedList的add邏輯
3> Vector(對外提供的方法全部被synchronized修飾,操作是執行緒安全的
)
Vector採用的擴容機制(初始化容量10,擴增容量大小可以自定義+預設2倍)
1> HashMap
2> TreeMap
1> HashSet
2> TreeSet