ArrayList和HashMap如何实现动态扩容以及扩容的规则
ArrayList扩容:
默认容量为10,最大容量2^30-8(-8:有些虚拟机在数组中保留了一些头信息。避免内存溢出OutOfMemoryError)
1动态扩容
2申请更大的数组空间 如new ArrayList(100)
3利用新数组 Arrays.copyof(源数组,新数组的长度)
ArrayList不适合存储大量数据
空间增长的规律:
jre1.6及以下 old*3/2+1
jre1.7及以上 old+old>>1(源码,int)
(正数的右移n位等于===原操作数/2^n,所以相当于增加一半)

浙公网安备 33010602011771号