黑马程序员技术交流社区

标题: ArrayList小疑问 [打印本页]

作者: 郑丹丹1990    时间: 2013-5-16 16:51
标题: ArrayList小疑问
本帖最后由 郑丹丹1990 于 2013-5-17 07:42 编辑
  1. ArrayList employees = new ArrayList();
  2. employees.Insert(0, "zdd");
  3. employees.Insert(1, "zzb");
  4. employees.Insert(2, "zxl");
  5. int count = employees.Count;
  6. int nums = employees.Capacity;
  7. Console.WriteLine(count + " " + nums);
  8. Console.ReadKey();
复制代码
结果3 4???
主要是nums
作者: 郑丹丹1990    时间: 2013-5-16 21:08
c15881291595 发表于 2013-5-16 17:07
Capacity是ArrayList 的可包含元素数,当实际元素数Count超过可包含元素时ArrayList会自动翻倍,初始为0, ...

我仍不明白。
作者: Return    时间: 2013-5-16 21:10
本帖最后由 Return 于 2013-5-16 21:14 编辑

Capacity是容量,好像始终为4的倍数,始终比Conut大
作者: 曾大鹏    时间: 2013-5-16 21:12
楼上不是说了吗 count就是你元素的个数 ,
Capacity是ArrayList 的可包含元素数,当实际元素数Count超过可包含元素时ArrayList会自动翻倍,初始为0,超过0个Capacity变为4,当实际元素数超过4个时Capacity会自动翻倍到8.同理超过8个时翻倍到16。。。然后超16就变32
Capacity=2的偶次方
作者: 郑丹丹1990    时间: 2013-5-16 21:13
曾大鹏 发表于 2013-5-16 21:12
楼上不是说了吗 count就是你元素的个数 ,
Capacity是ArrayList 的可包含元素数,当实际元素数Count超过可 ...

l理解!!!!

作者: 淡蓝色    时间: 2013-5-16 21:18
ArrayList的Capacity 就是由于你没有指定空间,所以当这个集合没有元素的时候,该属性值是0,如果有值的话,该值变成4,之后超过4个的话,就会编程8个,成倍的增长   
作者: 淡蓝色    时间: 2013-5-16 21:22
ArrayList arr=new ArrayList(3);
你可以这样指定集合的大小,超过了3个,集合容量变成了6个,成倍增长




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2