ArrayList的内部存储的原理是数组,Object[]数组,默认长度为10,若是超过10,则自动扩容,规则是((旧容量*3)/2)+1
一、内存开销
若是存储利用ArrayList存储2个Object,会创建10存储空间,则会浪费8存储空间
若是存储利用ArrayList存储11个Object,会创建16存储空间,则会浪费5存储空间
若是存储利用ArrayList存储17个Object,会创建25存储空间,则会浪费8存储空间
若是存储利用ArrayList存储26个Object,会创建38存储空间,则会浪费12存储空间
以此类推,若是在项目中创建很多的ArrayList,岂不是浪费很多的存储空间
二、时间开销
如果数据量很大,那么造成数组重新分配的次数会增加,但对于一般的数据量下,
1千需要分配 11次
1万一级需要分配17次
10万 需要分配23次
100万需要分配28次
本文深入探讨了ArrayList在Java中的存储机制,重点分析了其默认数组大小及扩容规则,并讨论了这种机制带来的内存与时间开销问题。
1871

被折叠的 条评论
为什么被折叠?



