邯郸专业网站建设公司,网站后台开发技术,北京梵客装饰公司地址电话,爱站网容器 在C#中#xff0c;容器通常指的是用于存储和组织数据的集合类。 本文介绍的容器是动态数组#xff1a;ListT 内部使用数组来存储元素#xff0c;当添加元素超出当前数组容量时#xff0c;会自动调整大小#xff08;扩容#xff09;。 list容器 List容器通常指的是用于存储和组织数据的集合类。 本文介绍的容器是动态数组ListT 内部使用数组来存储元素当添加元素超出当前数组容量时会自动调整大小扩容。 list容器 List是 C# 中的泛型集合容器全称为 ListT其中 T 表示类型参数允许你指定存储在列表中的元素的类型。ListT 提供了丰富的方法和属性来操作集合中的元素包括添加、删除和搜索等。 创建List列表 List要存放的数据类型 List列表名 new List要存放的数据类型(); Listint listNum new Listint();
List基本操作
添加元素 Add() listNum.Add(1);listNum.Add(2);listNum.Add(3);listNum.Add(4);listNum.Add(5);listNum.Add(5); 通过 Add 方法将内容存储到List中去。 获取容器大小 Count int count listNum.Count; Console.WriteLine(count); //6
访问元素 [索引] 容器名称[索引] Console.WriteLine(listNum[1]); //2
遍历元素 for和foreach 数组的两种遍历方式在List的遍历中同样适用。 for (int i 0; i listNum.Count; i){Console.WriteLine(listNum[i]);}foreach (int _num in listNum){Console.WriteLine(_num);} 检查元素是否存在 Contains() Contains()是一个布尔类型的方法当相关内容存在时返回true不存在时返回false。 //包含if (listNum.Contains(1)){Console.WriteLine(包含1);}
拷贝元素 GetRange() GetRange(i , j)是将一个List列表从第 i 位开始拷贝 j 个元素到新的List列表上的方法。 下面展示将列表全拷贝到新的列表上面。 Listint listTemp listNum.GetRange(0, listNum.Count);foreach (int _num in listTemp){Console.WriteLine(_num);}
索引查找元素 Index() 返回第一个找到的item索引如果没有找到就返回-1。 int Index1 listNum.IndexOf(5);
移除元素
移除在x位上的元素 RemoveAt(x) listNum.RemoveAt(1); //移除在第n位上的元素foreach (int _num in listNum){Console.WriteLine(_num);} 从第x个开始移除y个 RemoveRange(x, y) listNum.RemoveRange(1, 2); //从第几个开始移除几个foreach (int _num in listNum){Console.WriteLine(_num);} 清除值为x的元素 Remove(x) listNum.Remove(4);for (int i listNum.Count; i 0; i--){if (listNum[i] 5){listNum.RemoveAt(i);}}for (int i 0; i listNum.Count; i){Console.WriteLine(listNum[i]);} 清除所有的元素 Clear() listNum.Clear(); //清除所有的元素Console.WriteLine(listNum.Count); //0
转变数组 ToArray() int[] arrNum listNum.ToArray(); //转换为数组for (int i 0; i arrNum.Length; i){Console.WriteLine(arrNum[i]);} 其他
Remove() 倒序循环问题 因为list是一个动态数组并且会在Remove移除当前的元素之后改变数组大小然后进行i。这样就漏检查一个元素万一这个元素也是想要移除的就得再执行一次移除这样很麻烦所以倒序循环就能规避这一点元素一消除索引发生改变但是 i 之前的索引没有发生改变所以i 能完美的遍历所有的元素。 原本的正序循环也可以改进将 i 放在else当中当元素被移除时i 不实现自加1操作就可以了。 listNum.Remove(4);for (int i 0; i listNum.Count;){if (listNum[i] 5){listNum.RemoveAt(i);}else{i;}}for (int i listNum.Count; i 0; i--){if (listNum[i] 5){listNum.RemoveAt(i);}}
哈希值 哈希值通常指的是通过哈希函数对数据如字符串或数字进行处理后得到的一个固定长度的数值这个数值通常用于快速比较和检索数据。 int num 5;int hashCode num.GetHashCode();Console.WriteLine(hashCode);Console.WriteLine(listNum.GetHashCode());