对于 ArrayList 集合添加元素,我们总结一下

水一篇


  对于 ArrayList 集合添加元素,我们总结一下:
  ①、当通过 ArrayList() 构造一个空集合, 初始长度是为0的,第 1 次添加元素, 会创建一个长度为10的数组,并将该元素赋值到数组的第一个位置。
  ②、第 2 次添加元素, 集合不为空,而且由于集合的长度size+1是小于数组的长度10,所以直接添加元素到数组的第二个位置,不用扩容。
  ③、第 11 次添加元素,此时 size+1 = 11,而数组长度是10,这时候创建一个长度为10+10*0.5 = 15 的数组( 扩容1.5倍),然后将原数组元素引用 拷贝到新数组。并将第 11 次添加的元素赋值到新数组下标为10的位置。
  ④、第 Integer.MAX_VALUE - 8 = 2147483639,然后 2147483639%1.5=1431655759(这个数是要进行扩容) 次添加元素,为了 防止溢出,此时会直接创建一个 1431655759+1 大小的数组,这样一直, 每次添加一个元素,都只扩大一个范围
  ⑤、第 Integer.MAX_VALUE - 7 次添加元素时, 创建一个大小为 Integer.MAX_VALUE 的数组,在进行元素添加。
  ⑥、 第 Integer.MAX_VALUE + 1 次添加元素时,抛出 OutOfMemoryError 异常
  注意: 能向集合中添加 null 的,因为数组可以有 null 值存在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值