ArrayList不可以设置扩展的容量,默认1.5倍(add时,当前元素个数+1如果大于当前容量则进行扩容)
Vector可以设置扩展的容量,如果设置扩展容量则新容量=旧容量+扩展容量,如果没有设置,新容量=旧容量的2倍(可在Vector的构造函数中设置扩展的容量)
ArrayList的无参构造方法中初始容量为0(初次调用add()会更新为10)
Vector的无参构造方法中初始容量为10
HashMap的无参构造方法中初始容量为0(初次调用put()会更新为16,门限会更新为12=16*0.75)
HashMap扩容时,如果旧容量大于等于最大容量(2^30),则不扩容,设置新的门限=2^31 -1;反之新容量=旧容量的2倍,新门限=旧门限的2倍
下图中,jdk1.8的HashMap结构,新元素14是添加在链表结尾,不是链表头部;jdk1.7中新元素14是添加在链表头部(14->6->10)
以上基于jdk1.8
更多可见:ArrayList,LinkedList,Vector的区别