在 C# 中,List 不僅可以進行基本的操作,還支持一些進階操作來處理更複雜的場景。這些操作能夠讓 List 在處理大數據、過濾、轉換、查詢等情況下更加靈活高效。
以下是一些關於 C# List 的更高階應用介紹:
using System;
using System.Collections.Generic; // 使用 List 需要這個命名空間
using System.Linq; // 使用 LINQ 方法需要這個命名空間
class Program
{
static void Main()
{
// 1. 使用 LINQ 查詢 List
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// 取得所有偶數
List<int> evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Console.WriteLine("偶數:");
foreach (var num in evenNumbers)
{
Console.Write(num + " ");
}
Console.WriteLine();
// 2. List.ForEach() 方法
// 使用 List 的 ForEach() 方法進行批量操作
numbers.ForEach(n => Console.WriteLine("Number: " + n));
// 3. List.ConvertAll() 方法
// 將 List 中的整數轉換為對應的字符串
List<string> stringNumbers = numbers.ConvertAll(n => n.ToString());
Console.WriteLine("轉換為字串:");
foreach (var str in stringNumbers)
{
Console.Write(str + " ");
}
Console.WriteLine();
// 4. List.Find() 和 List.FindAll() 方法
// 使用 Find() 方法找到第一個符合條件的元素
int firstEven = numbers.Find(n => n % 2 == 0);
Console.WriteLine("第一個偶數: " + firstEven);
// 使用 FindAll() 方法找到所有符合條件的元素
List<int> largeNumbers = numbers.FindAll(n => n > 5);
Console.WriteLine("大於 5 的數字:");
foreach (var num in largeNumbers)
{
Console.Write(num + " ");
}
Console.WriteLine();
// 5. List.Exists() 方法
// 檢查是否存在符合條件的元素
bool hasLargeNumber = numbers.Exists(n => n > 10);
Console.WriteLine("List 是否有大於 10 的數字: " + hasLargeNumber);
// 6. List.TrueForAll() 方法
// 檢查所有元素是否都符合條件
bool allPositive = numbers.TrueForAll(n => n > 0);
Console.WriteLine("List 中是否全為正數: " + allPositive);
// 7. List.BinarySearch() 方法
// 使用 BinarySearch() 進行二分搜尋 (需要先排序)
numbers.Sort();
int index = numbers.BinarySearch(6);
Console.WriteLine("數字 6 的索引: " + index);
// 8. List.GetRange() 方法
// 取得 List 的部分範圍
List<int> subList = numbers.GetRange(2, 5); // 取得從索引 2 開始的 5 個元素
Console.WriteLine("子 List:");
foreach (var num in subList)
{
Console.Write(num + " ");
}
Console.WriteLine();
// 9. List.Capacity 和 List.TrimExcess()
// 調整 List 的容量以優化記憶體
Console.WriteLine("原始容量: " + numbers.Capacity);
numbers.TrimExcess(); // 去除多餘的容量
Console.WriteLine("優化後的容量: " + numbers.Capacity);
}
}