做網(wǎng)站服務(wù)器怎么用棗莊網(wǎng)站建設(shè)制作
簡述 C# 二維數(shù)據(jù)集合 List 的創(chuàng)建、遍歷、修改、輸出
- 1、為什么要使用列表 List
- 2、引入命名空間
- 3、聲明一維列表 List
- 4、聲明創(chuàng)建一個二維列表 List,數(shù)據(jù)類型 int
- 5、 簡單訪問元素
- 6、遍歷二維列表,控制臺輸出
- 7、遍歷二維列表,修改數(shù)據(jù),控制臺輸出,采用 Join 輸出行數(shù)據(jù)
- 8、刪除列表行,索引默認(rèn)從零開始
- 9、刪除集合中一定范圍內(nèi)的元素,索引默認(rèn)從零開始
- 10、在列表索引前插入元素
- 11、List的方法和屬性、方法或?qū)傩宰饔?/li>
1、為什么要使用列表 List
-
當(dāng)我們有很多類型一樣的數(shù)據(jù)時,可以使用數(shù)組來進行存儲并管理,但是數(shù)組的缺點:C# 數(shù)組的大小必須提前給定的、是固定的,不像 VB 數(shù)組可以自由按量變化。 如果我們有許多數(shù)據(jù)類型一樣,但數(shù)量不定的數(shù)據(jù),當(dāng)獲取的數(shù)據(jù)數(shù)量超過數(shù)組定義,數(shù)組將發(fā)生數(shù)據(jù)溢出錯誤,這時候可以使用集合類來進行管理——例如列表 List。我們可以使用列表 List 很方便的添加數(shù)據(jù),刪除數(shù)據(jù)以及其他的一些數(shù)據(jù)操作,便于方便數(shù)據(jù)操作,List 操作比數(shù)組更加靈活。List 類是 ArrayList 類的泛型等效類,該類使用大小可按需動態(tài)增加的數(shù)組實現(xiàn) IList 泛型接口。
-
泛型的好處:它為使用 C# 語言編寫面向?qū)ο蟪绦蛟黾恿藰O大的效力和靈活性。不會強行對值類型進行裝箱和拆箱,或?qū)σ妙愋瓦M行向下強制類型轉(zhuǎn)換,所以性能得到提高。
-
性能注意事項:在決定使用 IList 還是使用 ArrayList 類(兩者具有類似的功能)時,記住 IList 類在大多數(shù)情況下執(zhí)行得更好并且是類型安全的。如果對 IList 類的類型 T 使用引用類型,則兩個類的行為是完全相同的。但是,如果對類型 T 使用值類型,則需要考慮實現(xiàn)和裝箱問題。
2、引入命名空間
using System; using System.Collections.Generic;
3、聲明一維列表 List
List<T> mList = new List<T>();
T 為列表中元素類型,即數(shù)據(jù)類型。
4、聲明創(chuàng)建一個二維列表 List,數(shù)據(jù)類型 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、 簡單訪問元素
int element = twoDimensionalList[0][1]; // 獲取第一行第二個元素,值為2Console.WriteLine(element);Console.WriteLine();
A 輸出:2
6、遍歷二維列表,控制臺輸出
// 獲取二維列表行數(shù)int rowCount = twoDimensionalList.Count;// 獲取二維列表列數(shù)int columnCount = twoDimensionalList.Count == 0 ? 0 : twoDimensionalList[0].Count;//遍歷二維列表,控制臺輸出foreach (List<int> row in twoDimensionalList){foreach (int item in row){Console.Write(item + " ");//控制臺調(diào)試顯示數(shù)據(jù)}Console.WriteLine();}Console.WriteLine();
B 輸出:
1 2 3 4
5 6 7 8
9 10 11 12
7、遍歷二維列表,修改數(shù)據(jù),控制臺輸出,采用 Join 輸出行數(shù)據(jù)
for (int i = 0; i < rowCount; i++){for (int j = 0; j < columnCount; j++){twoDimensionalList[i][j] += 1;//修改數(shù)據(jù),二維數(shù)據(jù)每個數(shù)加 1}}//遍歷二維列表,控制臺輸出,采用 Join 輸出行數(shù)據(jù)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、刪除列表行,索引默認(rèn)從零開始
數(shù)據(jù)繼 C 輸出:
twoDimensionalList.RemoveAt(2);//刪除索引 2 的行數(shù)據(jù)
輸出:
2 3 4 5
6 7 8 9
9、刪除集合中一定范圍內(nèi)的元素,索引默認(rèn)從零開始
數(shù)據(jù)繼 C 輸出:
twoDimensionalList.RemoveRange(0, 2);//從索引 0 開始,刪除 2 行數(shù)據(jù)
輸出:
10 11 12 13
10、在列表索引前插入元素
數(shù)據(jù)繼 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的方法和屬性、方法或?qū)傩宰饔?/h2>
List 的方法和屬性在二維數(shù)組中同樣可以操作,先從一維 List 數(shù)據(jù)處理開始學(xué)習(xí)吧 😁😁😁
- Capacity 用于獲取或設(shè)置 List 可容納元素的數(shù)量。當(dāng)數(shù)量超過容量時,這個值會自動增長??梢栽O(shè)置這個值以減少容量,也可以調(diào)用trin()方法來減少容量以適合實際的元素數(shù)目。
- Count 屬性,用于獲取數(shù)組中當(dāng)前元素數(shù)量
- Item( ) 通過指定索引獲取或設(shè)置元素。對于List類來說,它是一個索引器。
- Add( ) 在List中添加一個對象的公有方法
- AddRange( ) 公有方法,在List尾部添加實現(xiàn)了ICollection接口的多個元素
- BinarySearch( ) 重載的公有方法,用于在排序的List內(nèi)使用二分查找來定位指定元素.
- Clear( ) 在List內(nèi)移除所有元素
- Contains( ) 測試一個元素是否在List內(nèi)
- CopyTo( ) 重載的公有方法,把一個List拷貝到一維數(shù)組內(nèi)
- Exists( ) 測試一個元素是否在List內(nèi)
- Find( ) 查找并返回List內(nèi)的出現(xiàn)的第一個匹配元素
- FindAll( ) 查找并返回List內(nèi)的所有匹配元素
- GetEnumerator( ) 重載的公有方法,返回一個用于迭代List的枚舉器
- Getrange( ) 拷貝指定范圍的元素到新的List內(nèi)
- IndexOf( ) 重載的公有方法,查找并返回每一個匹配元素的索引
- Insert( ) 在List內(nèi)插入一個元素
- InsertRange( ) 在List內(nèi)插入一組元素
- LastIndexOf( ) 重載的公有方法,,查找并返回最后一個匹配元素的索引
- Remove( ) 移除與指定元素匹配的第一個元素
- RemoveAt( ) 移除指定索引的元素
- RemoveRange( ) 移除指定范圍的元素
- Reverse( ) 反轉(zhuǎn)List內(nèi)元素的順序
- Sort( ) 對List內(nèi)的元素進行排序
- ToArray( ) 把List內(nèi)的元素拷貝到一個新的數(shù)組內(nèi)
- trimToSize( ) 將容量設(shè)置為List中元素的實際數(shù)目