初解ArrayList集合,ArrayList集合使用的注意点

ArrayList

ArrayList的定义:动态数组。动态是因为,ArrayList里会随着增加的元素的个数(Count)增加容量(Capacity)会自动增值。命名空间是:using System.Collections;

容量和元素个数

代码演示:默认的元素个数和集合容量

ArrayList  arr = new ArrayList(); 
Console.WriteLine(arr.Capacity + "," + arr.Count);//输出容量和元素的个数

输出结果:0,0
结论:默认的的ArrayList的容量和个数是 0

add(Object value)方法增加值

ArrayList arr = new ArrayList(); 
arr.Add(12);
arr.Add(13);
arr.Add(14);
arr.Add(15);        
Console.WriteLine(arr.Capacity + "," + arr.Count);

输出结果:4,4

ArrayList arr = new ArrayList(); 
arr.Add(12);
arr.Add(13);
arr.Add(14);
arr.Add(15);//容量翻倍
arr.Add(16);        
Console.WriteLine(arr.Capacity + "," + arr.Count);

输出结果:8,5

添加元素时,默认容量为4,元素个数超过容量,默认扩容容量两倍

结构函数赋值

一次结构函数赋值:使用函数构造函数来赋值,元素的个数(Count)增加容量(Capacity)会有数目变化呢?

ArrayList arr = new ArrayList();
arr.AddRange(new int[] { 1, 2, 3, 4, 5 });
arr.Add(12);
arr.Add(13);
arr.Add(14);
arr.Add(15);//容量翻倍
arr.Add(16);        
Console.WriteLine(arr.Capacity + "," + arr.Count);

输出结果:10,10

扫描二维码关注公众号,回复: 2483191 查看本文章

结论:使用构造函数赋值,ArraList的的Capacity默认为构造函数中传入的元素的个数

多次结构函数赋值

ArrayList arr = new ArrayList(new int[] { 12, 45 });
Console.WriteLine(arr.Capacity + "," + arr.Count);        
arr.AddRange(new int[] { 1, 2, 3, 4, 5 });//容量翻倍
arr.Add(12);
arr.Add(13);
arr.Add(14);
arr.Add(15);
arr.Add(16);
Console.WriteLine(arr.Capacity + "," + arr.Count);

输出结果:
2,2,
7,7
14,12

结论:ArrayList用多个构造函数赋值时,容量就等于每一次传入元素的个数之和。元素超过容量之和,容量扩容两倍。

ArrayList arr = new ArrayList(new int[] { 12, 45 });
Console.WriteLine(arr.Capacity + "," + arr.Count);        
arr.AddRange(new int[] { 1, 2, 3, 4, 5 });//容量翻倍
arr.Add(12);
arr.Add(13);
arr.Add(14);
arr.Add(15);
arr.Add(16)

arr = new ArrayList(new int[15]); //容量翻倍        

Console.WriteLine(arr.Capacity + "," + arr.Count); 

输出结果:
2,2
7,7
28,27

结论:原本的ArrayList容量为14,元素个数为12,arr = new ArrayList(new
int[15]);这条语句往里面arr里面添加了15个值为0,的整数。容量不够再次扩容两倍14*2=28,元素个数也12+15=28个

了解ArrayLise的原因

为了更好的使用List集合,因为List和ArrayList实现了几乎同样的接口。而List可以使用泛型.一般不用ArrayList
原因时因为ArraysList的Add方法传入的Object对象,使用时需要频繁拆箱和装箱

猜你喜欢

转载自blog.csdn.net/qq_38061677/article/details/81070498