简述 C# 二维数据集合 List 的创建、遍历、修改、输出
- 1、为什么要使用列表 List
- 2、引入命名空间
- 3、声明一维列表 List
- 4、声明创建一个二维列表 List,数据类型 int
- 5、 简单访问二维 List 元素或值
- 6、遍历二维列表,控制台输出
- 7、遍历二维列表,修改数据,控制台输出,采用 Join 输出行数据
- 8、删除列表行,索引默认从零开始
- 9、删除集合中一定范围内的元素,索引默认从零开始
- 10、在列表索引前插入元素
- 11、List的方法和属性、方法或属性作用
1、为什么要使用列表 List
-
当我们有很多类型一样的数据时,可以使用数组来进行存储并管理,但是数组的缺点:C# 数组的大小必须提前给定的、是固定的,不像 VB 数组可以自由按量变化。 如果我们有许多数据类型一样,但数量不定的数据,当获取的数据数量超过数组定义,数组将发生数据溢出错误,这时候可以使用集合类来进行管理——例如列表 List。我们可以使用列表 List 很方便的添加数据,删除数据以及其他的一些数据操作,便于方便数据操作,List 操作比数组更加灵活。List 类是 ArrayList 类的泛型等效类,该类使用大小可按需动态增加的数组实现 IList 泛型接口。
-
泛型的好处:它为使用 C# 语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。
-
性能注意事项:在决定使用 IList 还是使用 ArrayList 类(两者具有类似的功能)时,记住 IList 类在大多数情况下执行得更好并且是类型安全的。如果对 IList 类的类型 T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。
2、引入命名空间
using System; using System.Collections.Generic;
3、声明一维列表 List
List<T> mList = new List<T>();
T 为列表中元素类型,即数据类型。
4、声明创建一个二维列表 List,数据类型 int
//声明新的二维列表 List:twoDimensionalListList<List<int>> twoDimensionalList = new List<List<int>>();// 初始化二维列表 List ,添加 3 行 4 列twoDimensionalList.Add(new List<int> { 1, 2, 3, 4 });//添加一维 List 元素twoDimensionalList.Add(new List<int> { 5, 6, 7, 8 });twoDimensionalList.Add(new List<int> { 9, 10, 11, 12 });
5、 简单访问二维 List 元素或值
注意:索引默认从零开始
int element = twoDimensionalList[0][1]; // 获取第一行、第二列元素的值(行索引为 0,列索引为 1),值为 2Console.WriteLine(element);Console.WriteLine();
A 输出:2
6、遍历二维列表,控制台输出
// 获取二维列表行数int rowCount = twoDimensionalList.Count;// 获取二维列表列数int columnCount = twoDimensionalList.Count == 0 ? 0 : twoDimensionalList[0].Count;//遍历二维列表,控制台输出foreach (List<int> row in twoDimensionalList){foreach (int item in row){Console.Write(item + " ");//控制台调试显示数据}Console.WriteLine();}Console.WriteLine();
B 输出:
1 2 3 4
5 6 7 8
9 10 11 12
7、遍历二维列表,修改数据,控制台输出,采用 Join 输出行数据
for (int i = 0; i < rowCount; i++){for (int j = 0; j < columnCount; j++){twoDimensionalList[i][j] += 1;//修改数据,二维数据每个数加 1}}//遍历二维列表,控制台输出,采用 Join 输出行数据foreach (var row in twoDimensionalList) { Console.WriteLine(string.Join(" ", row)); }
C 输出:
2 3 4 5 //索引为 0
6 7 8 9 //索引为 1
10 11 12 13 //索引为 2
8、删除列表行,索引默认从零开始
数据继 C 输出:
twoDimensionalList.RemoveAt(2);//删除索引 2 的行数据
输出:
2 3 4 5
6 7 8 9
9、删除集合中一定范围内的元素,索引默认从零开始
数据继 C 输出:
twoDimensionalList.RemoveRange(0, 2);//从索引 0 开始,删除 2 行数据
输出:
10 11 12 13
10、在列表索引前插入元素
数据继 C 输出:
twoDimensionalList.Insert(1, new List<int> { 15, 16, 17, 18 });
输出:
2 3 4 5
15 16 17 18
6 7 8 9
10 11 12 13
11、List的方法和属性、方法或属性作用
List 的方法和属性在二维数组中同样可以操作,先从一维 List 数据处理开始学习吧 😁😁😁
- Capacity 用于获取或设置 List 可容纳元素的数量。当数量超过容量时,这个值会自动增长。可以设置这个值以减少容量,也可以调用trin()方法来减少容量以适合实际的元素数目。
- Count 属性,用于获取数组中当前元素数量
- Item( ) 通过指定索引获取或设置元素。对于List类来说,它是一个索引器。
- Add( ) 在List中添加一个对象的公有方法
- AddRange( ) 公有方法,在List尾部添加实现了ICollection接口的多个元素
- BinarySearch( ) 重载的公有方法,用于在排序的List内使用二分查找来定位指定元素.
- Clear( ) 在List内移除所有元素
- Contains( ) 测试一个元素是否在List内
- CopyTo( ) 重载的公有方法,把一个List拷贝到一维数组内
- Exists( ) 测试一个元素是否在List内
- Find( ) 查找并返回List内的出现的第一个匹配元素
- FindAll( ) 查找并返回List内的所有匹配元素
- GetEnumerator( ) 重载的公有方法,返回一个用于迭代List的枚举器
- Getrange( ) 拷贝指定范围的元素到新的List内
- IndexOf( ) 重载的公有方法,查找并返回每一个匹配元素的索引
- Insert( ) 在List内插入一个元素
- InsertRange( ) 在List内插入一组元素
- LastIndexOf( ) 重载的公有方法,,查找并返回最后一个匹配元素的索引
- Remove( ) 移除与指定元素匹配的第一个元素
- RemoveAt( ) 移除指定索引的元素
- RemoveRange( ) 移除指定范围的元素
- Reverse( ) 反转List内元素的顺序
- Sort( ) 对List内的元素进行排序
- ToArray( ) 把List内的元素拷贝到一个新的数组内
- trimToSize( ) 将容量设置为List中元素的实际数目