C#集合ArrayList、泛型集合List(3)
数组的制约:局限性。有多少放多少,要想追加,就必须重新再定义一个数组,这就造成了资源的极大浪费而且性能消耗也比较大。因此此操作不太推荐。所以集合就来了。
int[] arr=new[]{1,2,3,4}
创建集合:
ArrayList list=new ArrayList(); list.Add(12); list.Add(22); list.Add(32); Console.WriteLine(list.Count);//输出元素个数 3
在原有基础上在追加一个:实现动态添加数据,而避免再次开辟一个资源空间。
ArrayList list=new ArrayList(); list.Add(12); list.Add(22); list.Add(32); Console.WriteLine(list.Count);//输出元素个数 3 list.Add(24); Console.WriteLine(list.Count);//输出元素个数 4
集合特点:
特点1.可以伸缩。
取值:和数组一样通过下标
Console.WriteLine(list[0]); //输出12 Console.WriteLine(list[1]); //输出22
for(var i=0;i<list.Length;i++) { Console.WriteLine(list[i]); //输出所有元素 }
当然,也可以把object类型放入list中,但是此操作在取值时需要进行拆箱操作,无法直接操作里面的元素,例:
特点2:类型未知
list.Add(12);
list.Add(12.2);
list.Add("abcd"); foreach(var item in list)
{
Console.WriteLine((int)list[i]); //拆箱操作(解析double和string类型报错)
}
List:1.极力推荐泛型集合,数组的数据类型一致性,集合的可伸缩性
List<int> list=new List<int> //只能存放 int list.Add(1); list.Add(2); list.Add(3); list.Add(5); list.Add(6); Console.WriteLine(list.Count); //输出5 foreach(var item in list) { //此时不需要进行拆箱操作,因为只有int类型,节省了性能的消耗 Console.WriteLine(list[item]) } List<string> list=new List<string> //只能存放 string
删除元素本身:Remove,如果要删除的数据类型是数组或者对象,不可以直接删除,须先找到
list.Remove(1); list.Remove(5); Console.WriteLine(item); //输出 2 3 6
例如:
找到要删除的数据:
根据下标删除:RemoveAt(),特别注意,根据下标进行删除,原有的下标会发生改变
例如:
list.RemoveAt(0); //删除下标为0,删除成功,下一个元素的下标将会发生改变 list.RemoveAt(0); list.RemoveAt(0);
list.RemoveAt(0);
list.RemoveAt(0);
console.writeLine(list.Count); //元素全部删除
一旦删除的个数大于集合本身元素个数,就会报索引值超出范围的问题。
list.clear(); //清空所有元素
list.insert();插入值参数1:插入位置的下标,参数2:对应的值
例如:
list.insert(2,66);
元素排序、降序操作
foreach(var item in list.Order(m=>m)) { console.WriteLine(list); //升序操作 }; foreach(var item in list.OrderDescending(m=>m)) { console.WriteLine(list); //降序操作
}; console.WriteLine(list.sum()); //元素总和 console.WriteLine(list.Average()); //元素平均数 console.WriteLine(list.max()); //元素最大值 console.WriteLine(list.min()); //元素最小值 console.WriteLine(list.Count(m=>m%2==0));//元素中偶数的个数
删除下标为0