数组和集合都是存放大量相同的数据
在数组中,想要对数组成员进行处理很麻烦,特别是插入、删除、增加、清空、排序等工作。但是集合对此作出了弥补。
集合具有很强的通用性,所以常用的方法的方法名应该记住
集合的声明:
ArrayList a1 =new ArrayList();
增加:
a1.Add(0);这样就可以在集合a1中添加项
Add方法添加的object的类型→也就是说可以添加任何类型
还有就是当a1.Add(nums);nums是一个数组的时候,也是可以添加进集合的,但是整个数组是作为集合的一个元素,而这个元素中包含原有的数组中的全部信息
若想将数组中的每个元素依次添加到集合的末尾,那么这个时候可以使用a1.AddRange(nums)方法;这个方法的强大的地方还有一点那就是可以将自己再加一遍a1.AddRange(a1);就会将集合a1中的数再加一遍
移除:
关于移除的方法有两个,Remove和RemoveAt
RemoveAt(int index);表示将移除下标为index的数据移除,index超出a1.Count的时候将会报错
Remove(object obj);将会移除obj第一次出现的那个,集合a1中没有obj的时候将不会报错,只是什么都不执行而已
清空:a1.Clear()方法,就可以清空集合
排序:a1.Sort();方法是正序排列
a1.Reverse();将集合中元素顺序反转
复制:a1.Clone()方法可以将集合复制
是否包含某元素:a1.Contains(1),检查集合中是否包含数字1;
插入:
a1.Insert(int index, object value);在index位置插入value
a1.InsertRange();插入一个数组
转化成数组:
a1.ToArray();将集合转换为数组
泛型集合
List<T> 名称=new List<T>;
这样就声明了一个泛型集合,T表示你要声明的集合的类型
使用泛型集合,那么就需要集合中的数据的类型相同
对泛型集合的操作参考集合中的方法,完全一样
使用泛型集合的最大的好处就是节省资源,比ArrayList运算速度要快,这个是可以通过代码来验证的
Stopwatch这个类可以记录代码段的运行时间,那么我们可以用下面的代码进行测试
staticvoid Main(string[] args)
{
ArrayList a1 = new ArrayList();
List<int> lInt = new List<int>();
Stopwatch sw1 = new Stopwatch();
Stopwatch sw2 = new Stopwatch();
sw1.Start();
for (int i= 0; i<1000000; i++)
{
a1.Add(i);
}
sw1.Stop();
Console.WriteLine(sw1.Elapsed);
sw2.Start();
for (int i = 0; i <1000000; i++)
{
lInt.Add(i);
}
sw2.Stop();
Console.WriteLine(sw2.Elapsed);
Console.ReadKey();
}
那么运行的结果为:
很明显的可以看出使用List<T>要节省很多时间,运算效率较高