码迷,mamicode.com
首页 > 编程语言 > 详细

小谈 ArrayListList与数组

时间:2019-03-26 18:19:04      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:就是   rar   ++   div   obj   click   col   display   onclick   

1、数组在初始化的时候要指定数组的大小,ArrayList本质也是数组,不过是一个动态的数组,大小是可以变化的

  数组的大小:length;

  ArrayList的大小:size。

2、数组很好理解,ArrayList是动态数组,究竟是怎么回事?我研究了一下

技术图片
1 List<Integer> list = new ArrayList<>();
2 for(int i = 0;i< 37;i++) {
3   list.add(i);
4 }
View Code

 

  对这段代码进行断点调试,然后观察List的变化:

  list 刚初始化的时候,list本质是Object[0]

  技术图片

  i ∈[0,9],list本质是Object[10],从list.add(0)的时候list由原本的Object[0]→Object[10],

  (注意看Object[0] id=34,而Object[10] id=39)

  技术图片

  一直到第十次for循环,我们看到size在一次增加,而Object数组的length一直是10,没变。

  (直到此时Object[10]  id=39,没有变化)

  技术图片

  下面变化来了!当进入第11次循环体的时候,神奇的是Object数组的length变成了15!!!

  (同时Object[15] id=62,变化了)

  技术图片

  技术图片

  (直到第15次循环,Object[15] id=62  没变化,下面依次在Obiect[22]、Object[33]、Object[49]的时候id变化了)

  技术图片技术图片技术图片

  

  由上图的变化,可以看出ArrayList就是动态的数组,每当list真实的size达到Object的length的时候,又出来一个扩容、全新的Object数组(暂时不知,每一次扩容大小是什么规则),但至少满足用户需求。就这一点相较常规的数组来说,ArrayList更加灵活。

  处女篇,欢迎指正~

 

小谈 ArrayListList与数组

标签:就是   rar   ++   div   obj   click   col   display   onclick   

原文地址:https://www.cnblogs.com/magic-garden/p/10601931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!