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,所以相当于增加一半)

 

posted @ 2020-03-09 04:09  三杯弄剑  阅读(713)  评论(0)    收藏  举报