iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0
自我挑戰組

C# 由淺入深系列 第 5

Day5 List2

  • 分享至 

  • xImage
  •  

在 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);
    }
}

說明

  1. 使用 LINQ 查詢 List:利用 LINQ 查詢,過濾出符合條件的元素,並返回新的 List。
  2. List.ForEach() 方法:批量對 List 中的每個元素執行特定操作。
  3. List.ConvertAll() 方法:將 List 中的每個元素轉換為另一種型別。
  4. List.Find() 和 List.FindAll() 方法:查找符合條件的第一個元素或所有符合條件的元素。
  5. List.Exists() 方法:檢查是否有任何元素符合指定條件。
  6. List.TrueForAll() 方法:檢查 List 中的所有元素是否都符合某個條件。
  7. List.BinarySearch() 方法:在排序好的 List 中進行二分搜尋,找到指定元素的索引。
  8. List.GetRange() 方法:提取 List 的子集合,取得部分範圍的元素。
    List.Capacity 和 List.TrimExcess():調整 List 的容量以優化記憶體使用。
  9. 這些更高階應用使 List 在處理大規模數據和複雜操作時更加高效,並且提供了豐富的功能來應對各種情況。

上一篇
Day4 Array 4 + List1
下一篇
Day6 Dictionary1
系列文
C# 由淺入深7
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言