C#中列表的插入删除等的一些相关知识

1,创建列表(列表可以存储 任何类型的数据,在创建列表对象的时候首先要指定你要创建的这个列表要 存储什么类型的)(泛型)
List< int> scoreList = new List<int>();
new List<int>(){1,2,3}
new List<string>(){"one","two"}
var scoreList = new List<int>();
2,几个列表的方法
1,Capacity获取容量大小
2,Add()方法添加元素
3,Insert()方法插入元素
4,[index]访问元素
5,Count属性访问元素个数
6,RemoveAt()方法移除指定位置的元素
7,IndexOf()方法取得一个元素所在列表中的索引位置
LastIndexOf()上面的方法是从前往后搜索,这个是从后往前搜索,搜索到满足条件的就停止
上面的两个方法,如果没有找到指定元素就返回-1
8,Sort()对列表中是元素进行从小到大排序

3,如何取得列表中的数据?列表中的数据跟数组有点相似, 索引从0开始 ,可以通过索引来访问
scoreList[0] //访问添加到列表中的第一个数据
4,列表内部数据是 使用数组进行的存储,一个空的列表内部会有一个长度为0的数组,当给列表中添加元素的时候,列表的容量会扩大为4,如果添加第5个的时候,列表的大小会重新设置为8,如果添加第9个元素,列表容量会扩大为16,依次增加。当列表的中的容量发生改变的时候,它会创建一个新的数组, 使用Array.Copy()方法将旧数组中的元素复制到新数组中。为了节省时间,如果事先知道要存储的数据的个数,就可以利用列表的构造函数指定列表的容量大小,比如下面的
List<int> intlist = new List<int>(10);创建了一个初始容量为10的列表,当容量不够用的时候,每次都会按照原来容量的2倍进行扩容。
我们可以通过 Capacity属性获取和设置容量
intList.Capacity = 100;
5,注意容量和列表中元素个数的区别,容量是列表中用于存储数据的数组的长度通过capacity获取,列表中的元素是我们添加进去需要管理的数据,通过 Count获取
6,遍历列表有两种方式:
1, for循环,遍历所有的索引,通过索引访问列表中的元素
for(int i=0;i<list.Count;i++){
//循环体list[i]
}
2, foreach遍历
foreach(int temp in list){ // 依次取得list中的每一个元素赋值给temp,并执行循环体
//循环体 temp
}
7, var arrList = new List<int>();
arrList.Add(12);
arrList.Add(1223);
arrList.Add(123123);//向列表中添加一个数
arrList.Add(12);
foreach (int temp in arrList)
{
Console.Write(temp + " ");
}
Console.WriteLine();
arrList.Insert(1, 23);//在下标为1的位置插入一个数,索引必须存在
foreach (int temp in arrList)
{
Console.Write(temp + " ");
}
arrList.RemoveAt(1);//移除下标为1位置的数字;
foreach (int temp in arrList)
{
Console.Write(temp + " ");
}
Console.ReadLine();

arrList.IndexOf(12);// 返回这个元素的索引,不存在就返回-1,只会找第一个,从头找
arrList.LastIndexOf(12);// 从后往前索引,
arrList.Sort();// 对列表中的元素从小到大排序
插入方法的实现
public void Insert(int index,T item)
{
if(index >= 0 && index < count)//index是否超出索引范围
{
if(Capacity == count)
{
var newArray = new T[Capacity * 2];//创建一个新的数组,使其容量翻倍
array.CopyTo(newArray, count);// 将从索引位置的所有数据,复制到新的数组中
array = newArray;
}
for(int i = count - 1; i >= index; i--)//将数据从最后一直到插入的那个数。开始往后移一位
{
array[i + 1] = array[i];
}
array[index] = item;
count++;
}
else
{
throw new Exception("索引超出范围");//抛出异常
}
}
通过,class.Insert(1,2);在买那函数中,对列表进行插入
移除一个数,通过它的下标移除:
public void RemoveAt(int index)//移除,index为要移除位置的下标
{
if (index >= 0 && index < count)
{
for (int i = index + 1; i < count; i++)//从index的后一位开始,往前移动一位
{
array[i - 1] = array[i];
}
count--;//循环结束,列表的长度也就少了一位。
}
else
{
throw new Exception("索引超出范围");//抛出异常
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值