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));//元素中偶数的个数
原文地址:https://www.cnblogs.com/hcyesdo/p/12780396.html